2026-06-19T02:59:21.552Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T02:59:21.552Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T02:59:40.955Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T02:59:41.043Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T02:59:41.045Z LOG Recover Missed Call running on port 3000
2026-06-19T02:59:41.045Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T02:59:41.045Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T02:59:51.814Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T02:59:51.814Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:00:24.597Z ERROR [TextBee get received SMS error] {"status":502,"data":{"raw":"<!DOCTYPE html>\n<!--[if lt IE 7]> <html class=\"no-js ie6 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"no-js ie7 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"no-js ie8 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if gt IE 8]><!--> <html class=\"no-js\" lang=\"en-US\"> <!--<![endif]-->\n<head>\n\n<title>textbee.dev | 502: Bad gateway</title>\n<meta charset=\"UTF-8\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\" />\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n<link rel=\"stylesheet\" id=\"cf_styles-css\" href=\"/cdn-cgi/styles/main.css\" />\n</head>\n<body>\n<div id=\"cf-wrapper\">\n    <div id=\"cf-error-details\" class=\"p-0\">\n        <header class=\"mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-8\">\n            <h1 class=\"inline-block sm:block sm:mb-2 font-light text-60 lg:text-4xl text-black-dark leading-tight mr-2\">\n                <span class=\"inline-block\">Bad gateway</span>\n                <span class=\"code-label\">Error code 502</span>\n            </h1>\n            <div>\n                Visit <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_502&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">cloudflare.com</a> for more information.\n            </div>\n            <div class=\"mt-3\">2026-06-19 03:00:24 UTC</div>\n        </header>\n        <div class=\"my-8 bg-gradient-gray\">\n            <div class=\"w-240 lg:w-full mx-auto\">\n                <div class=\"clearfix md:px-8\">\n                    <div id=\"cf-browser-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-browser block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">You</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Browser\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-cloudflare-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_502&#38;utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <span class=\"cf-icon-cloud block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    </a>\n  </div>\n  <span class=\"md:block w-full truncate\">Atlanta</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_502&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Cloudflare\n  </a>\n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-host-status\" class=\"cf-error-source relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-server block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-error w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">api.textbee.dev</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Host\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-red-error\">Error</span>\n  \n</div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"w-240 lg:w-full mx-auto mb-8 lg:px-8\">\n            <div class=\"clearfix\">\n                <div class=\"w-1/2 md:w-full float-left pr-6 md:pb-10 md:pr-0 leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What happened?</h2>\n                    <p>The web server reported a bad gateway error.</p>\n                </div>\n                <div class=\"w-1/2 md:w-full float-left leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What can I do?</h2>\n                    <p class=\"mb-6\">Please try again in a few minutes.</p>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300\">\n    <p class=\"text-13\">\n      <span class=\"cf-footer-item sm:block sm:mb-1\">Cloudflare Ray ID: <strong class=\"font-semibold\">a0df4873395a6772</strong></span>\n      <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      <span id=\"cf-footer-item-ip\" class=\"cf-footer-item hidden sm:block sm:mb-1\">\n        Your IP:\n        <button type=\"button\" id=\"cf-footer-ip-reveal\" class=\"cf-footer-ip-reveal-btn\">Click to reveal</button>\n        <span class=\"hidden\" id=\"cf-footer-ip\">107.161.23.171</span>\n        <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      </span>\n      <span class=\"cf-footer-item sm:block sm:mb-1\"><span>Performance &amp; security by</span> <a rel=\"noopener noreferrer\" href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_502&#38;utm_campaign=api.textbee.dev\" id=\"brand_link\" target=\"_blank\">Cloudflare</a></span>\n      \n    </p>\n    <script>(function(){function d(){var b=a.getElementById(\"cf-footer-item-ip\"),c=a.getElementById(\"cf-footer-ip-reveal\");b&&\"classList\"in b&&(b.classList.remove(\"hidden\"),c.addEventListener(\"click\",function(){c.classList.add(\"hidden\");a.getElementById(\"cf-footer-ip\").classList.remove(\"hidden\")}))}var a=document;document.addEventListener&&a.addEventListener(\"DOMContentLoaded\",d)})();</script>\n  </div><!-- /.error-footer -->\n\n    </div>\n</div>\n</body>\n</html>"}}
2026-06-19T03:00:24.597Z ERROR [TextBee inbound polling failed] <!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en-US"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en-US"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!
2026-06-19T03:00:52.252Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:00:52.252Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:01:26.973Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:01:26.974Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:01:53.487Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:01:53.488Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:02:22.511Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:02:22.511Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:02:51.990Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:02:51.990Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:03:30.372Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Just checking in — do you still need help with the pest issue? Reply with your address/city and preferred time, and Metro Pest Control can help with the next step. Reply STOP to opt out."}
2026-06-19T03:03:36.522Z ERROR [TextBee inbound polling failed] TextBee get received SMS timed out after 15000ms
2026-06-19T03:03:52.240Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:03:52.241Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:04:22.270Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:04:22.270Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:04:53.044Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:04:53.044Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:05:21.710Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:05:21.710Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:05:51.659Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:05:51.660Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:06:21.645Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:06:21.645Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:06:51.700Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:06:51.701Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:06:57.355Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:06:57.456Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:06:57.468Z LOG Recover Missed Call running on port 3000
2026-06-19T03:06:57.485Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:06:57.486Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:07:21.688Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:07:21.712Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:07:51.674Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:07:51.674Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:07:56.949Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:07:56.963Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:07:56.965Z LOG Recover Missed Call running on port 3000
2026-06-19T03:07:56.965Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:07:56.965Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:08:21.688Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:08:21.688Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:08:51.774Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:08:51.774Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:09:21.994Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:09:21.994Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:09:51.781Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:09:51.781Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:10:21.855Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:10:21.855Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:10:51.746Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:10:51.746Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:11:21.743Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:11:21.744Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:11:51.770Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:11:51.771Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:12:21.751Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:12:21.751Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:12:51.755Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:12:51.756Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:13:21.797Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:13:21.798Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:13:51.777Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:13:51.777Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:14:21.817Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:14:21.817Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:14:52.149Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:14:52.150Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:15:21.835Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:15:21.835Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:15:52.109Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:15:52.109Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:16:21.847Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:16:21.847Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:16:52.240Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:16:52.240Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:17:21.881Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:17:21.881Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:17:29.082Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:17:29.154Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:17:29.155Z LOG Recover Missed Call running on port 3000
2026-06-19T03:17:29.156Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:17:29.156Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:17:52.037Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:17:52.038Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:17:57.142Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:17:57.155Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:17:57.157Z LOG Recover Missed Call running on port 3000
2026-06-19T03:17:57.157Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:17:57.157Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:18:21.912Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:18:21.913Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:18:40.557Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:18:40.569Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:18:40.571Z LOG Recover Missed Call running on port 3000
2026-06-19T03:18:40.571Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:18:40.571Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:18:52.038Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:18:52.038Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:18:56.960Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:18:57.053Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:18:57.055Z LOG Recover Missed Call running on port 3000
2026-06-19T03:18:57.055Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:18:57.055Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:19:22.040Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:19:22.041Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:19:51.908Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:19:51.908Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:20:21.913Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:20:21.913Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:20:52.187Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:20:52.187Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:21:21.936Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:21:21.937Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:21:51.954Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:21:51.955Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:22:22.187Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:22:22.187Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:22:51.985Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:22:51.986Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:23:22.024Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:23:22.024Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:23:52.019Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:23:52.019Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:24:22.042Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:24:22.042Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:24:52.055Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:24:52.055Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:25:22.149Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:25:22.149Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:25:52.282Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:25:52.282Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:26:22.070Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:26:22.071Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:26:52.255Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:26:52.255Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:26:52.673Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T03:26:52.751Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T03:26:52.753Z LOG Recover Missed Call running on port 3000
2026-06-19T03:26:52.753Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T03:26:52.753Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T03:27:22.148Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:27:22.148Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:27:52.134Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:27:52.134Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:28:17.283Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:UTLtGW3sfL7iwJiyvPUM17-0m9huEb7pyIVsqc9MMCwdbE7PaaCtNQ","callLegId":"e97b0a4e-6b8e-11f1-b972-9ec75de98f39","callSessionId":"e97b0346-6b8e-11f1-93bf-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T03:28:17.493Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T03:28:17.495Z LOG [Missed-call recovery triggered] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T03:28:17.502Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T03:28:22.095Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:28:22.095Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:28:27.514Z LOG [Missed-call recovery SMS attempt] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T03:28:27.517Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T03:28:28.402Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a34b75c77015dcde152126f","recipientCount":1}}}
2026-06-19T03:28:28.408Z LOG [Missed-call recovery SMS sent] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a34b75c77015dcde152126f\",\"recipientCount\":1}}"}
2026-06-19T03:28:28.418Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T03:28:28.420Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T03:28:28.952Z LOG [Telnyx voice command ok: answer]
2026-06-19T03:28:29.076Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:UTLtGW3sfL7iwJiyvPUM17-0m9huEb7pyIVsqc9MMCwdbE7PaaCtNQ","callLegId":"e97b0a4e-6b8e-11f1-b972-9ec75de98f39","callSessionId":"e97b0346-6b8e-11f1-93bf-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T03:28:29.080Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T03:28:29.082Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T03:28:29.152Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T03:28:29.532Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:UTLtGW3sfL7iwJiyvPUM17-0m9huEb7pyIVsqc9MMCwdbE7PaaCtNQ","callLegId":"e97b0a4e-6b8e-11f1-b972-9ec75de98f39","callSessionId":"e97b0346-6b8e-11f1-93bf-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T03:28:29.535Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T03:28:29.539Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T03:28:29.539Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T03:28:40.072Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:UTLtGW3sfL7iwJiyvPUM17-0m9huEb7pyIVsqc9MMCwdbE7PaaCtNQ","callLegId":"e97b0a4e-6b8e-11f1-b972-9ec75de98f39","callSessionId":"e97b0346-6b8e-11f1-93bf-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T03:28:40.075Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T03:28:40.080Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T03:28:40.080Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T03:28:40.275Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T03:28:40.289Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:UTLtGW3sfL7iwJiyvPUM17-0m9huEb7pyIVsqc9MMCwdbE7PaaCtNQ","callLegId":"e97b0a4e-6b8e-11f1-b972-9ec75de98f39","callSessionId":"e97b0346-6b8e-11f1-93bf-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T03:28:40.292Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T03:28:40.293Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e97b0346-6b8e-11f1-93bf-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T03:28:52.117Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:28:52.117Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:29:22.171Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:29:22.172Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:29:52.144Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:29:52.144Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:30:22.148Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:30:22.148Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:30:52.203Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:30:52.203Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:31:22.158Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:31:22.158Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:31:52.155Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:31:52.155Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:32:22.167Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:32:22.167Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:32:52.180Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:32:52.180Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:33:22.195Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:33:22.195Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:33:52.193Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:33:52.193Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:34:22.199Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:34:22.199Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:34:52.215Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:34:52.216Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:35:22.517Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:35:22.517Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:35:52.244Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:35:52.244Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:36:22.551Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:36:22.552Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:36:52.315Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:36:52.316Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:37:22.283Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:37:22.283Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:37:52.274Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:37:52.274Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:38:22.281Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:38:22.281Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:38:52.314Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:38:52.315Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:39:22.328Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:39:22.328Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:39:52.338Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:39:52.338Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:40:22.307Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:40:22.308Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:40:52.360Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:40:52.360Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:41:22.308Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:41:22.309Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:41:52.327Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:41:52.327Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:42:22.440Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:42:22.440Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:42:52.339Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:42:52.340Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:43:22.346Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:43:22.346Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:43:52.359Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:43:52.359Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:44:22.363Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:44:22.363Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:44:52.385Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:44:52.385Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:45:22.390Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:45:22.390Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:45:52.477Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:45:52.477Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:46:22.493Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:46:22.493Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:46:52.800Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:46:52.800Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:47:22.444Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:47:22.444Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:47:52.483Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:47:52.483Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:48:22.476Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:48:22.476Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:48:52.487Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:48:52.487Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:49:22.633Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:49:22.633Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:49:52.500Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:49:52.500Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:50:22.521Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:50:22.521Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:50:52.530Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:50:52.530Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:51:22.572Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:51:22.572Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:51:52.913Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:51:52.913Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:52:22.596Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:52:22.596Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:52:52.578Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:52:52.579Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:53:22.657Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:53:22.658Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:53:52.594Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:53:52.594Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:54:22.618Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:54:22.618Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:54:52.670Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:54:52.670Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:55:22.635Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:55:22.635Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:55:52.744Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:55:52.744Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:56:22.761Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:56:22.761Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:56:52.785Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Just checking in — do you still need help with the pest issue? Reply with your address/city and preferred time, and Metro Pest Control can help with the next step. Reply STOP to opt out."}
2026-06-19T03:56:52.827Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:56:52.827Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:57:22.968Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:57:22.968Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:57:52.658Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:57:52.658Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:58:22.671Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:58:22.671Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:58:52.675Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:58:52.675Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:59:22.685Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:59:22.686Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T03:59:52.697Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T03:59:52.697Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:00:28.317Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:00:28.317Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:00:54.633Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:00:54.633Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:01:23.968Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:01:23.968Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:01:53.406Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:01:53.407Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:02:23.358Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:02:23.358Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:02:53.226Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:02:53.226Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:03:23.380Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:03:23.380Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:03:30.373Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+17347963608","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-19T04:03:52.884Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:03:52.884Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:04:22.801Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:04:22.802Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:04:52.902Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:04:52.902Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:05:22.805Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:05:22.805Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:05:52.849Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:05:52.849Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:06:23.003Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:06:23.004Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:06:52.826Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:06:52.826Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:07:22.832Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:07:22.833Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:07:53.039Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:07:53.039Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:08:22.869Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:08:22.869Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:08:52.854Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:08:52.854Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:09:22.711Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:09:22.711Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:09:52.860Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:09:52.860Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:10:22.700Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:10:22.700Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:10:52.716Z ERROR [TextBee get received SMS error] {"status":401,"data":{"error":"Unauthorized"}}
2026-06-19T04:10:52.717Z ERROR [TextBee inbound polling failed] Unauthorized
2026-06-19T04:11:57.734Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T04:11:57.772Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T04:11:57.775Z LOG Recover Missed Call running on port 3000
2026-06-19T04:11:57.776Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T04:11:57.776Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T06:11:57.838Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-19T08:11:57.888Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-19T10:02:32.367Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:iOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ","callLegId":"fcd4d872-6bc5-11f1-92b3-c23d774763a2","callSessionId":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T10:02:32.512Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T10:02:32.514Z LOG [Missed-call recovery triggered] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T10:02:32.537Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T10:02:42.547Z LOG [Missed-call recovery SMS attempt] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T10:02:42.550Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T10:02:46.389Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3513c577015dcde16f747a","recipientCount":1}}}
2026-06-19T10:02:46.397Z LOG [Missed-call recovery SMS sent] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3513c577015dcde16f747a\",\"recipientCount\":1}}"}
2026-06-19T10:02:46.409Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"c06d24e7-8fb3-4a97-81dc-fe543460083e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T10:02:46.410Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T10:02:46.720Z LOG [Telnyx voice command ok: answer]
2026-06-19T10:02:47.010Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:iOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ","callLegId":"fcd4d872-6bc5-11f1-92b3-c23d774763a2","callSessionId":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T10:02:47.014Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:02:47.017Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T10:02:47.181Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T10:02:48.078Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:iOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ","callLegId":"fcd4d872-6bc5-11f1-92b3-c23d774763a2","callSessionId":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T10:02:48.082Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:02:48.084Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T10:02:48.084Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:02:55.531Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:iOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ","callLegId":"fcd4d872-6bc5-11f1-92b3-c23d774763a2","callSessionId":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T10:02:55.540Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:02:55.544Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T10:02:55.545Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:02:55.551Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:iOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ","callLegId":"fcd4d872-6bc5-11f1-92b3-c23d774763a2","callSessionId":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T10:02:55.556Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:02:55.559Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fcd4af5a-6bc5-11f1-92f6-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T10:02:55.677Z ERROR [Telnyx API error] {"path":"/calls/v3%3AiOvkuk32Tc1mjFBGsbArDxWNmAGHHoHGRL8L6O0Bp2_5mW3o5UmnLQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T10:02:55.680Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T10:16:57.465Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T10:16:57.507Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T10:16:57.559Z LOG Recover Missed Call running on port 3000
2026-06-19T10:16:57.559Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T10:16:57.559Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T10:17:57.350Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:r3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw","callLegId":"2441314c-6bc8-11f1-9878-02420aef32a1","callSessionId":"24412c6a-6bc8-11f1-b634-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T10:17:57.525Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T10:17:57.526Z LOG [Missed-call recovery triggered] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T10:17:57.540Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T10:18:07.547Z LOG [Missed-call recovery SMS attempt] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T10:18:07.550Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T10:18:07.950Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35176077015dcde170c18a","recipientCount":1}}}
2026-06-19T10:18:07.959Z LOG [Missed-call recovery SMS sent] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35176077015dcde170c18a\",\"recipientCount\":1}}"}
2026-06-19T10:18:07.970Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T10:18:07.972Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T10:18:08.396Z LOG [Telnyx voice command ok: answer]
2026-06-19T10:18:08.590Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:r3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw","callLegId":"2441314c-6bc8-11f1-9878-02420aef32a1","callSessionId":"24412c6a-6bc8-11f1-b634-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T10:18:08.595Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:18:08.598Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T10:18:08.758Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T10:18:09.820Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:r3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw","callLegId":"2441314c-6bc8-11f1-9878-02420aef32a1","callSessionId":"24412c6a-6bc8-11f1-b634-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T10:18:09.826Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:18:09.829Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T10:18:09.830Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:18:13.714Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:r3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw","callLegId":"2441314c-6bc8-11f1-9878-02420aef32a1","callSessionId":"24412c6a-6bc8-11f1-b634-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T10:18:13.720Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:18:13.724Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T10:18:13.724Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:18:13.792Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:r3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw","callLegId":"2441314c-6bc8-11f1-9878-02420aef32a1","callSessionId":"24412c6a-6bc8-11f1-b634-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T10:18:13.796Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:18:13.799Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"24412c6a-6bc8-11f1-b634-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T10:18:13.835Z ERROR [Telnyx API error] {"path":"/calls/v3%3Ar3rSZlKDITxjU2NdXaVHA7zKAy1kU6ZP0sb2WSfOoq1W6Gk1u7oDrw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T10:18:13.836Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T10:18:48.360Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:18:48.362Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this is an ant problem around our house","providerMessageSid":"textbee:6a35178877015dcde170cc02"}
2026-06-19T10:18:48.368Z LOG [Inbound SMS linked to lead] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T10:18:48.374Z LOG [Incoming SMS saved to lead] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","messageId":"74bd8425-e8f9-4234-a126-10c564762b58","messageProviderSid":"textbee:6a35178877015dcde170cc02","mode":"webhook_fast_save"}
2026-06-19T10:18:48.385Z LOG [SMS cost guard disabled for testing] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:18:51.656Z LOG [Customer SMS reply attempt] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":99}
2026-06-19T10:18:51.656Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":99}
2026-06-19T10:18:52.045Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35178c77015dcde170ccb5","recipientCount":1}}}
2026-06-19T10:18:52.046Z LOG [Customer SMS reply sent] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35178c77015dcde170ccb5\",\"recipientCount\":1}}"}
2026-06-19T10:18:52.050Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address? Reply STOP to opt out."}
2026-06-19T10:18:52.053Z LOG [Owner alert check] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T10:18:52.055Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"ants","reason":"not enough qualified details yet"}
2026-06-19T10:18:52.055Z LOG [SMS webhook async AI continuation completed] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","providerMessageSid":"textbee:6a35178877015dcde170cc02"}
2026-06-19T10:19:24.229Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:19:24.230Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles Simms 33536 Unicorn Ct Westland, MI 48186","providerMessageSid":"textbee:6a3517ac77015dcde170daf6"}
2026-06-19T10:19:24.233Z LOG [Inbound SMS linked to lead] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T10:19:24.241Z LOG [Incoming SMS saved to lead] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","messageId":"7058bba8-1f64-43d9-894c-dee4f037b27e","messageProviderSid":"textbee:6a3517ac77015dcde170daf6","mode":"webhook_fast_save"}
2026-06-19T10:19:24.251Z LOG [SMS cost guard disabled for testing] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:19:26.835Z LOG [Customer SMS reply attempt] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":118}
2026-06-19T10:19:26.835Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":118}
2026-06-19T10:19:27.143Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3517af77015dcde170dca3","recipientCount":1}}}
2026-06-19T10:19:27.144Z LOG [Customer SMS reply sent] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3517af77015dcde170dca3\",\"recipientCount\":1}}"}
2026-06-19T10:19:27.152Z LOG [Conversation marked complete after AI final reply] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","requiredDetailsPresent":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly. Reply STOP to opt out."}
2026-06-19T10:19:27.219Z LOG [Owner alert check] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T10:19:27.221Z LOG [Owner alert sending] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-19T10:19:27.222Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: ants\nAddress: 33536 Unicorn Ct Wes","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T10:19:27.223Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":153}
2026-06-19T10:19:27.708Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3517af77015dcde170dcf0","recipientCount":1}}}
2026-06-19T10:19:27.708Z LOG [Owner SMS TextBee result] accepted
2026-06-19T10:19:27.708Z LOG [Owner alert sms result] sent/accepted
2026-06-19T10:19:27.879Z LOG [Owner alert email result] sent/accepted
2026-06-19T10:19:27.884Z LOG [Owner alert completed] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-19T10:19:27.885Z LOG [SMS webhook async AI continuation completed] {"leadId":"4c9595f3-a649-4058-81c4-8bd9c3bbbd6a","phone":"+14783092224","providerMessageSid":"textbee:6a3517ac77015dcde170daf6"}
2026-06-19T10:32:34.875Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T10:32:34.968Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T10:32:34.971Z LOG Recover Missed Call running on port 3000
2026-06-19T10:32:34.971Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T10:32:34.971Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T10:44:48.978Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:2GRPRuSD1JWoOy5O4nDOzsvNDyqYKD51fw2uO2WcP-NLz_FNBoCBEg","callLegId":"e4d260fe-6bcb-11f1-ada2-02420aef29a1","callSessionId":"e4d256cc-6bcb-11f1-9a1a-02420aef29a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T10:44:49.077Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T10:44:49.078Z LOG [Missed-call recovery triggered] {"key":"e4d256cc-6bcb-11f1-9a1a-02420aef29a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T10:44:49.086Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T10:45:12.369Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T10:45:12.458Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T10:45:12.461Z LOG Recover Missed Call running on port 3000
2026-06-19T10:45:12.461Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T10:45:12.461Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T10:45:12.713Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:2GRPRuSD1JWoOy5O4nDOzsvNDyqYKD51fw2uO2WcP-NLz_FNBoCBEg","callLegId":"e4d260fe-6bcb-11f1-ada2-02420aef29a1","callSessionId":"e4d256cc-6bcb-11f1-9a1a-02420aef29a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T10:45:12.716Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-19T10:45:14.326Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:iamrpK0199zNQa8SEv3XNmWLcvEXvjjLGYHvtQKzHd7sSQJKsSTgrA","callLegId":"f3f2f0e4-6bcb-11f1-8804-9ec75de98f39","callSessionId":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T10:45:14.390Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T10:45:14.391Z LOG [Missed-call recovery triggered] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T10:45:14.462Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T10:45:24.473Z LOG [Missed-call recovery SMS attempt] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T10:45:24.476Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T10:45:24.881Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a351dc577015dcde1729444","recipientCount":1}}}
2026-06-19T10:45:24.888Z LOG [Missed-call recovery SMS sent] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a351dc577015dcde1729444\",\"recipientCount\":1}}"}
2026-06-19T10:45:24.899Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T10:45:24.900Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T10:45:25.157Z LOG [Telnyx voice command ok: answer]
2026-06-19T10:45:25.253Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:iamrpK0199zNQa8SEv3XNmWLcvEXvjjLGYHvtQKzHd7sSQJKsSTgrA","callLegId":"f3f2f0e4-6bcb-11f1-8804-9ec75de98f39","callSessionId":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T10:45:25.257Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:45:25.260Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T10:45:25.319Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T10:45:25.611Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:iamrpK0199zNQa8SEv3XNmWLcvEXvjjLGYHvtQKzHd7sSQJKsSTgrA","callLegId":"f3f2f0e4-6bcb-11f1-8804-9ec75de98f39","callSessionId":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T10:45:25.616Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:45:25.619Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T10:45:25.619Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:45:36.111Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:iamrpK0199zNQa8SEv3XNmWLcvEXvjjLGYHvtQKzHd7sSQJKsSTgrA","callLegId":"f3f2f0e4-6bcb-11f1-8804-9ec75de98f39","callSessionId":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T10:45:36.117Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:45:36.120Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T10:45:36.121Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:45:36.293Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T10:45:36.384Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:iamrpK0199zNQa8SEv3XNmWLcvEXvjjLGYHvtQKzHd7sSQJKsSTgrA","callLegId":"f3f2f0e4-6bcb-11f1-8804-9ec75de98f39","callSessionId":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T10:45:36.389Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:45:36.392Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f3f2ea90-6bcb-11f1-97ac-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T10:45:56.119Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:45:56.122Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Hi, how is the weather today?","providerMessageSid":"textbee:6a351de477015dcde1729a0d"}
2026-06-19T10:45:56.129Z LOG [Inbound SMS linked to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T10:45:56.135Z LOG [Incoming SMS saved to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","messageId":"28993f6b-5020-4744-a8f3-d360e2e581cf","messageProviderSid":"textbee:6a351de477015dcde1729a0d","mode":"webhook_fast_save"}
2026-06-19T10:45:56.154Z LOG [SMS cost guard disabled for testing] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:45:59.913Z LOG [Customer SMS reply attempt] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":99}
2026-06-19T10:45:59.914Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":99}
2026-06-19T10:46:00.123Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a351de877015dcde1729aae","recipientCount":1}}}
2026-06-19T10:46:00.124Z LOG [Customer SMS reply sent] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a351de877015dcde1729aae\",\"recipientCount\":1}}"}
2026-06-19T10:46:00.131Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address? Reply STOP to opt out."}
2026-06-19T10:46:00.134Z LOG [Owner alert check] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T10:46:00.135Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"OUTBOUND: Metro Pest Control: Sorry we missed your call. What can we help with today? Reply STOP to opt out.\nINBOUND: Hi, how is the weather today?","reason":"not enough qualified details yet"}
2026-06-19T10:46:00.136Z LOG [SMS webhook async AI continuation completed] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","providerMessageSid":"textbee:6a351de477015dcde1729a0d"}
2026-06-19T10:46:30.019Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:46:30.019Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles Simms, 33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a351e0677015dcde1729ec0"}
2026-06-19T10:46:30.024Z LOG [Inbound SMS linked to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T10:46:30.034Z LOG [Incoming SMS saved to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","messageId":"5ca225d9-f5ab-4044-b2fa-8ea938adb628","messageProviderSid":"textbee:6a351e0677015dcde1729ec0","mode":"webhook_fast_save"}
2026-06-19T10:46:30.044Z LOG [SMS cost guard disabled for testing] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:46:32.542Z LOG [Customer SMS reply attempt] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":118}
2026-06-19T10:46:32.542Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":118}
2026-06-19T10:46:32.748Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a351e0977015dcde1729f18","recipientCount":1}}}
2026-06-19T10:46:32.749Z LOG [Customer SMS reply sent] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a351e0977015dcde1729f18\",\"recipientCount\":1}}"}
2026-06-19T10:46:32.768Z LOG [Conversation marked complete after AI final reply] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","requiredDetailsPresent":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly. Reply STOP to opt out."}
2026-06-19T10:46:32.826Z LOG [Owner alert check] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T10:46:32.830Z LOG [Owner alert sending] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-19T10:46:32.832Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: OUTBOUND: Metro Pest Control: Sorr","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T10:46:32.832Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":297}
2026-06-19T10:46:33.085Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a351e0977015dcde1729f62","recipientCount":1}}}
2026-06-19T10:46:33.085Z LOG [Owner SMS TextBee result] accepted
2026-06-19T10:46:33.086Z LOG [Owner alert sms result] sent/accepted
2026-06-19T10:46:33.483Z LOG [Owner alert email result] sent/accepted
2026-06-19T10:46:33.486Z LOG [Owner alert completed] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-19T10:46:33.487Z LOG [SMS webhook async AI continuation completed] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","providerMessageSid":"textbee:6a351e0677015dcde1729ec0"}
2026-06-19T10:48:10.992Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:48:10.992Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Are you a robot?","providerMessageSid":"textbee:6a351e6b77015dcde172ac91"}
2026-06-19T10:48:10.999Z LOG [Inbound SMS linked to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"qualified","mode":"webhook_fast_save"}
2026-06-19T10:48:11.003Z LOG [Incoming SMS saved to lead] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","messageId":"08dc9e80-0f5b-45d9-bcdf-f0067ad78de9","messageProviderSid":"textbee:6a351e6b77015dcde172ac91","mode":"webhook_fast_save"}
2026-06-19T10:48:11.022Z LOG [SMS cost guard disabled for testing] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:48:11.031Z LOG [Post-lead update mode] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"Are you a robot?"}
2026-06-19T10:48:11.031Z LOG [Post-lead customer ack suppressed] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-19T10:48:11.034Z LOG [Owner lead-update SMS check] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-19T10:48:11.036Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: OUTBOUND: Metro Pest Control: Sorry we mi","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T10:48:11.036Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":323}
2026-06-19T10:48:11.316Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a351e6b77015dcde172acc2","recipientCount":1}}}
2026-06-19T10:48:11.316Z LOG [Owner SMS TextBee result] accepted
2026-06-19T10:48:11.316Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-19T10:48:11.319Z LOG [SMS webhook async AI continuation completed] {"leadId":"7bc1815f-6ea3-41c6-bf52-d7bf23f672f5","phone":"+14783092224","providerMessageSid":"textbee:6a351e6b77015dcde172ac91"}
2026-06-19T10:58:27.459Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T10:58:27.479Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T10:58:27.482Z LOG Recover Missed Call running on port 3000
2026-06-19T10:58:27.482Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T10:58:27.483Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T10:59:09.876Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:JxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg","callLegId":"e5f87264-6bcd-11f1-b5ed-02420aef3520","callSessionId":"e5f86cd8-6bcd-11f1-b11a-02420aef3520","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T10:59:09.924Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T10:59:09.925Z LOG [Missed-call recovery triggered] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T10:59:09.965Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T10:59:19.974Z LOG [Missed-call recovery SMS attempt] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T10:59:19.979Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T10:59:20.388Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35210877015dcde1734402","recipientCount":1}}}
2026-06-19T10:59:20.398Z LOG [Missed-call recovery SMS sent] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35210877015dcde1734402\",\"recipientCount\":1}}"}
2026-06-19T10:59:20.410Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T10:59:20.411Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T10:59:20.871Z LOG [Telnyx voice command ok: answer]
2026-06-19T10:59:21.040Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:JxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg","callLegId":"e5f87264-6bcd-11f1-b5ed-02420aef3520","callSessionId":"e5f86cd8-6bcd-11f1-b11a-02420aef3520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T10:59:21.047Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:59:21.050Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T10:59:21.194Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T10:59:22.135Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:JxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg","callLegId":"e5f87264-6bcd-11f1-b5ed-02420aef3520","callSessionId":"e5f86cd8-6bcd-11f1-b11a-02420aef3520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T10:59:22.139Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:59:22.142Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T10:59:22.142Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:59:27.190Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:JxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg","callLegId":"e5f87264-6bcd-11f1-b5ed-02420aef3520","callSessionId":"e5f86cd8-6bcd-11f1-b11a-02420aef3520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T10:59:27.198Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:59:27.200Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T10:59:27.200Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T10:59:27.265Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:JxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg","callLegId":"e5f87264-6bcd-11f1-b5ed-02420aef3520","callSessionId":"e5f86cd8-6bcd-11f1-b11a-02420aef3520","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T10:59:27.272Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T10:59:27.275Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e5f86cd8-6bcd-11f1-b11a-02420aef3520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T10:59:27.336Z ERROR [Telnyx API error] {"path":"/calls/v3%3AJxVX4p_fxnAUIP6uvOyW6T97pwi-c3oCrZi2FgM7SGaB4Xkco7cudg/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T10:59:27.338Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T10:59:51.981Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T10:59:51.985Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I'm having problems with roaches in our house","providerMessageSid":"textbee:6a35212777015dcde1734e74"}
2026-06-19T10:59:51.993Z LOG [Inbound SMS linked to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T10:59:51.997Z LOG [Incoming SMS saved to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","messageId":"1104a3d4-adbc-4e66-8256-ad5e2f133ebc","messageProviderSid":"textbee:6a35212777015dcde1734e74","mode":"webhook_fast_save"}
2026-06-19T10:59:52.010Z LOG [SMS cost guard disabled for testing] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T10:59:54.999Z LOG [Customer SMS reply attempt] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":99}
2026-06-19T10:59:54.999Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":99}
2026-06-19T10:59:55.242Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35212b77015dcde1734f09","recipientCount":1}}}
2026-06-19T10:59:55.242Z LOG [Customer SMS reply sent] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35212b77015dcde1734f09\",\"recipientCount\":1}}"}
2026-06-19T10:59:55.248Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T10:59:55.250Z LOG [Owner alert check] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T10:59:55.252Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"roaches","reason":"not enough qualified details yet"}
2026-06-19T10:59:55.252Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","providerMessageSid":"textbee:6a35212777015dcde1734e74"}
2026-06-19T11:01:13.529Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:01:13.529Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles Simms","providerMessageSid":"textbee:6a35217477015dcde173b5ba"}
2026-06-19T11:01:13.534Z LOG [Inbound SMS linked to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:01:13.538Z LOG [Incoming SMS saved to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","messageId":"1a952efb-6f0e-4721-b0e2-e4cc133acb06","messageProviderSid":"textbee:6a35217477015dcde173b5ba","mode":"webhook_fast_save"}
2026-06-19T11:01:13.549Z LOG [SMS cost guard disabled for testing] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:01:15.724Z LOG [Customer SMS reply attempt] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":85}
2026-06-19T11:01:15.724Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":85}
2026-06-19T11:01:23.592Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35218177015dcde173c20d","recipientCount":1}}}
2026-06-19T11:01:23.593Z LOG [Customer SMS reply sent] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35218177015dcde173c20d\",\"recipientCount\":1}}"}
2026-06-19T11:01:23.596Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-19T11:01:23.600Z LOG [Owner alert check] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:01:23.601Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"roaches","reason":"not enough qualified details yet"}
2026-06-19T11:01:23.602Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","providerMessageSid":"textbee:6a35217477015dcde173b5ba"}
2026-06-19T11:01:28.157Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:01:28.158Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"My name is Charles Simms and address is 33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35218377015dcde173c3d3"}
2026-06-19T11:01:28.163Z LOG [Inbound SMS linked to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:01:28.167Z LOG [Incoming SMS saved to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","messageId":"ff7e68cf-5d52-463a-a498-f09b3e210398","messageProviderSid":"textbee:6a35218377015dcde173c3d3","mode":"webhook_fast_save"}
2026-06-19T11:01:28.174Z LOG [SMS cost guard disabled for testing] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:01:30.516Z LOG [Customer SMS reply attempt] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":118}
2026-06-19T11:01:30.516Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":118}
2026-06-19T11:02:23.710Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:02:23.711Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I just gave it to you","providerMessageSid":"textbee:6a3521bb77015dcde173f78a"}
2026-06-19T11:02:23.716Z LOG [Inbound SMS linked to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"qualified","mode":"webhook_fast_save"}
2026-06-19T11:02:23.720Z LOG [Incoming SMS saved to lead] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","messageId":"4b2b2007-9749-4997-bc54-b5f44500b4b8","messageProviderSid":"textbee:6a3521bb77015dcde173f78a","mode":"webhook_fast_save"}
2026-06-19T11:02:23.728Z LOG [SMS cost guard disabled for testing] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:02:23.734Z LOG [Post-lead update mode] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"I just gave it to you"}
2026-06-19T11:02:23.734Z LOG [Post-lead customer ack suppressed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-19T11:02:23.736Z LOG [Owner lead-update SMS check] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-19T11:02:23.738Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: roaches\nAddress: 33536 Unicorn Ct, Westla","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T11:02:23.739Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":188}
2026-06-19T11:02:28.306Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3521c377015dcde173ff82","recipientCount":1}}}
2026-06-19T11:02:28.306Z LOG [Owner SMS TextBee result] accepted
2026-06-19T11:02:28.306Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-19T11:02:28.312Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","providerMessageSid":"textbee:6a3521bb77015dcde173f78a"}
2026-06-19T11:03:35.557Z ERROR [TextBee API error] {"status":524,"data":{"raw":"<!DOCTYPE html>\n<!--[if lt IE 7]> <html class=\"no-js ie6 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"no-js ie7 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"no-js ie8 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if gt IE 8]><!--> <html class=\"no-js\" lang=\"en-US\"> <!--<![endif]-->\n<head>\n\n<title>textbee.dev | 524: A timeout occurred</title>\n<meta charset=\"UTF-8\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\" />\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n<link rel=\"stylesheet\" id=\"cf_styles-css\" href=\"/cdn-cgi/styles/main.css\" />\n</head>\n<body>\n<div id=\"cf-wrapper\">\n    <div id=\"cf-error-details\" class=\"p-0\">\n        <header class=\"mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-8\">\n            <h1 class=\"inline-block sm:block sm:mb-2 font-light text-60 lg:text-4xl text-black-dark leading-tight mr-2\">\n                <span class=\"inline-block\">A timeout occurred</span>\n                <span class=\"code-label\">Error code 524</span>\n            </h1>\n            <div>\n                Visit <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">cloudflare.com</a> for more information.\n            </div>\n            <div class=\"mt-3\">2026-06-19 11:03:35 UTC</div>\n        </header>\n        <div class=\"my-8 bg-gradient-gray\">\n            <div class=\"w-240 lg:w-full mx-auto\">\n                <div class=\"clearfix md:px-8\">\n                    <div id=\"cf-browser-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-browser block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">You</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Browser\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-cloudflare-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&#38;utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <span class=\"cf-icon-cloud block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    </a>\n  </div>\n  <span class=\"md:block w-full truncate\">Atlanta</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Cloudflare\n  </a>\n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-host-status\" class=\"cf-error-source relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-server block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-error w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">api.textbee.dev</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Host\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-red-error\">Error</span>\n  \n</div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"w-240 lg:w-full mx-auto mb-8 lg:px-8\">\n            <div class=\"clearfix\">\n                <div class=\"w-1/2 md:w-full float-left pr-6 md:pb-10 md:pr-0 leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What happened?</h2>\n                    <p class=\"mb-2\">The origin web server timed out responding to this request.</p><p>The likely cause is an overloaded background task, database or application, stressing the resources on the host web server.</p>\n                </div>\n                <div class=\"w-1/2 md:w-full float-left leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What can I do?</h2>\n                    \n              <h3 class=\"text-15 font-semibold mb-2\">If you're a visitor of this website:</h3>\n              <p class=\"mb-6\">Please try again in a few minutes.</p>\n\n              <h3 class=\"text-15 font-semibold mb-2\">If you're the owner of this website:</h3>\n              <p>Please refer to the <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/\">Error 524</a> article:</p>\n              <ul class=\"ml-4\">\n                <li>Contact your hosting provider; check for long-running processes or an overloaded web server.</li>\n                <li>Use status polling of large HTTP processes to avoid this error.</li>\n                <li>Run the long-running scripts on a <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/dns/proxy-status/#dns-only-records\">grey-clouded subdomain</a>.</li>\n                <li>Enterprise customers can <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/#resolution-on-cloudflare\">increase the timeout setting</a> globally or for specific requests using Cache Rules.</li>\n              </ul>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300\">\n    <p class=\"text-13\">\n      <span class=\"cf-footer-item sm:block sm:mb-1\">Cloudflare Ray ID: <strong class=\"font-semibold\">a0e20943ba6786ab</strong></span>\n      <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      <span id=\"cf-footer-item-ip\" class=\"cf-footer-item hidden sm:block sm:mb-1\">\n        Your IP:\n        <button type=\"button\" id=\"cf-footer-ip-reveal\" class=\"cf-footer-ip-reveal-btn\">Click to reveal</button>\n        <span class=\"hidden\" id=\"cf-footer-ip\">107.161.23.171</span>\n        <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      </span>\n      <span class=\"cf-footer-item sm:block sm:mb-1\"><span>Performance &amp; security by</span> <a rel=\"noopener noreferrer\" href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&#38;utm_campaign=api.textbee.dev\" id=\"brand_link\" target=\"_blank\">Cloudflare</a></span>\n      \n    </p>\n    <script>(function(){function d(){var b=a.getElementById(\"cf-footer-item-ip\"),c=a.getElementById(\"cf-footer-ip-reveal\");b&&\"classList\"in b&&(b.classList.remove(\"hidden\"),c.addEventListener(\"click\",function(){c.classList.add(\"hidden\");a.getElementById(\"cf-footer-ip\").classList.remove(\"hidden\")}))}var a=document;document.addEventListener&&a.addEventListener(\"DOMContentLoaded\",d)})();</script>\n  </div><!-- /.error-footer -->\n\n    </div>\n</div>\n</body>\n</html>"}}
2026-06-19T11:03:35.566Z ERROR [Customer SMS reply send failed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"error":"<!DOCTYPE html>\n<!--[if lt IE 7]> <html class=\"no-js ie6 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"no-js ie7 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"no-js ie8 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if gt IE 8]><!--> <html class=\"no-js\" lang=\"en-US\"> <!--<![endif]-->\n<head>\n\n<title>textbee.dev | 524: A timeout occurred</title>\n<meta charset=\"UTF-8\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\" />\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n<link rel=\"stylesheet\" id=\"cf_styles-css\" href=\"/cdn-cgi/styles/main.css\" />\n</head>\n<body>\n<div id=\"cf-wrapper\">\n    <div id=\"cf-error-details\" class=\"p-0\">\n        <header class=\"mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-8\">\n            <h1 class=\"inline-block sm:block sm:mb-2 font-light text-60 lg:text-4xl text-black-dark leading-tight mr-2\">\n                <span class=\"inline-block\">A timeout occurred</span>\n                <span class=\"code-label\">Error code 524</span>\n            </h1>\n            <div>\n                Visit <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">cloudflare.com</a> for more information.\n            </div>\n            <div class=\"mt-3\">2026-06-19 11:03:35 UTC</div>\n        </header>\n        <div class=\"my-8 bg-gradient-gray\">\n            <div class=\"w-240 lg:w-full mx-auto\">\n                <div class=\"clearfix md:px-8\">\n                    <div id=\"cf-browser-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-browser block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">You</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Browser\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-cloudflare-status\" class=\" relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&#38;utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <span class=\"cf-icon-cloud block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    </a>\n  </div>\n  <span class=\"md:block w-full truncate\">Atlanta</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  <a href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&utm_campaign=api.textbee.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    Cloudflare\n  </a>\n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-green-success\">Working</span>\n  \n</div>\n                    <div id=\"cf-host-status\" class=\"cf-error-source relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center\">\n  <div class=\"relative mb-10 md:m-0\">\n    \n    <span class=\"cf-icon-server block md:hidden h-20 bg-center bg-no-repeat\"></span>\n    <span class=\"cf-icon-error w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4\"></span>\n    \n  </div>\n  <span class=\"md:block w-full truncate\">api.textbee.dev</span>\n  <h3 class=\"md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3\">\n  \n    Host\n  \n  </h3>\n  \n  <span class=\"leading-1.3 text-2xl text-red-error\">Error</span>\n  \n</div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"w-240 lg:w-full mx-auto mb-8 lg:px-8\">\n            <div class=\"clearfix\">\n                <div class=\"w-1/2 md:w-full float-left pr-6 md:pb-10 md:pr-0 leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What happened?</h2>\n                    <p class=\"mb-2\">The origin web server timed out responding to this request.</p><p>The likely cause is an overloaded background task, database or application, stressing the resources on the host web server.</p>\n                </div>\n                <div class=\"w-1/2 md:w-full float-left leading-relaxed\">\n                    <h2 class=\"text-3xl font-normal leading-1.3 mb-4\">What can I do?</h2>\n                    \n              <h3 class=\"text-15 font-semibold mb-2\">If you're a visitor of this website:</h3>\n              <p class=\"mb-6\">Please try again in a few minutes.</p>\n\n              <h3 class=\"text-15 font-semibold mb-2\">If you're the owner of this website:</h3>\n              <p>Please refer to the <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/\">Error 524</a> article:</p>\n              <ul class=\"ml-4\">\n                <li>Contact your hosting provider; check for long-running processes or an overloaded web server.</li>\n                <li>Use status polling of large HTTP processes to avoid this error.</li>\n                <li>Run the long-running scripts on a <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/dns/proxy-status/#dns-only-records\">grey-clouded subdomain</a>.</li>\n                <li>Enterprise customers can <a rel=\"noopener noreferrer\" href=\"https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/#resolution-on-cloudflare\">increase the timeout setting</a> globally or for specific requests using Cache Rules.</li>\n              </ul>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300\">\n    <p class=\"text-13\">\n      <span class=\"cf-footer-item sm:block sm:mb-1\">Cloudflare Ray ID: <strong class=\"font-semibold\">a0e20943ba6786ab</strong></span>\n      <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      <span id=\"cf-footer-item-ip\" class=\"cf-footer-item hidden sm:block sm:mb-1\">\n        Your IP:\n        <button type=\"button\" id=\"cf-footer-ip-reveal\" class=\"cf-footer-ip-reveal-btn\">Click to reveal</button>\n        <span class=\"hidden\" id=\"cf-footer-ip\">107.161.23.171</span>\n        <span class=\"cf-footer-separator sm:hidden\">&bull;</span>\n      </span>\n      <span class=\"cf-footer-item sm:block sm:mb-1\"><span>Performance &amp; security by</span> <a rel=\"noopener noreferrer\" href=\"https://www.cloudflare.com/5xx-error-landing?utm_source=errorcode_524&#38;utm_campaign=api.textbee.dev\" id=\"brand_link\" target=\"_blank\">Cloudflare</a></span>\n      \n    </p>\n    <script>(function(){function d(){var b=a.getElementById(\"cf-footer-item-ip\"),c=a.getElementById(\"cf-footer-ip-reveal\");b&&\"classList\"in b&&(b.classList.remove(\"hidden\"),c.addEventListener(\"click\",function(){c.classList.add(\"hidden\");a.getElementById(\"cf-footer-ip\").classList.remove(\"hidden\")}))}var a=document;document.addEventListener&&a.addEventListener(\"DOMContentLoaded\",d)})();</script>\n  </div><!-- /.error-footer -->\n\n    </div>\n</div>\n</body>\n</html>"}
2026-06-19T11:03:37.067Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":118}
2026-06-19T11:03:39.769Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35220b77015dcde17443b7","recipientCount":1}}}
2026-06-19T11:03:39.769Z LOG [Customer SMS reply sent] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":2,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35220b77015dcde17443b7\",\"recipientCount\":1}}"}
2026-06-19T11:03:39.782Z LOG [Conversation marked complete after AI final reply] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","requiredDetailsPresent":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly. Reply STOP to opt out."}
2026-06-19T11:03:39.784Z LOG [Owner alert check] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:03:39.785Z LOG [Owner alert sending] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-19T11:03:39.787Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: roaches\nAddress: 33536 Unicorn Ct,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T11:03:39.787Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":157}
2026-06-19T11:03:40.231Z LOG [Owner alert email result] sent/accepted
2026-06-19T11:03:43.521Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35220e77015dcde174465d","recipientCount":1}}}
2026-06-19T11:03:43.522Z LOG [Owner SMS TextBee result] accepted
2026-06-19T11:03:43.522Z LOG [Owner alert sms result] sent/accepted
2026-06-19T11:03:43.525Z LOG [Owner alert completed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-19T11:03:43.526Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bade7e4-0f41-4b14-a79e-b01cb5f4652f","phone":"+14783092224","providerMessageSid":"textbee:6a35218377015dcde173c3d3"}
2026-06-19T11:19:27.374Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T11:19:27.461Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T11:19:27.466Z LOG Recover Missed Call running on port 3000
2026-06-19T11:19:27.466Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T11:19:27.467Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T11:19:52.036Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:kRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA","callLegId":"ca77a6a6-6bd0-11f1-93f4-02420aef3820","callSessionId":"ca779f30-6bd0-11f1-bc4d-02420aef3820","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T11:19:52.078Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T11:19:52.079Z LOG [Missed-call recovery triggered] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T11:19:52.086Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T11:20:02.093Z LOG [Missed-call recovery SMS attempt] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T11:20:02.097Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T11:20:03.558Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3525e377015dcde17596b5","recipientCount":1}}}
2026-06-19T11:20:03.600Z LOG [Missed-call recovery SMS sent] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3525e377015dcde17596b5\",\"recipientCount\":1}}"}
2026-06-19T11:20:03.635Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T11:20:03.668Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T11:20:04.098Z LOG [Telnyx voice command ok: answer]
2026-06-19T11:20:04.390Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:kRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA","callLegId":"ca77a6a6-6bd0-11f1-93f4-02420aef3820","callSessionId":"ca779f30-6bd0-11f1-bc4d-02420aef3820","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T11:20:04.410Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:20:04.414Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T11:20:04.616Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T11:20:05.536Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:kRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA","callLegId":"ca77a6a6-6bd0-11f1-93f4-02420aef3820","callSessionId":"ca779f30-6bd0-11f1-bc4d-02420aef3820","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T11:20:05.542Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:20:05.545Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T11:20:05.546Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T11:20:10.442Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:kRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA","callLegId":"ca77a6a6-6bd0-11f1-93f4-02420aef3820","callSessionId":"ca779f30-6bd0-11f1-bc4d-02420aef3820","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T11:20:10.449Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:20:10.453Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T11:20:10.541Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:kRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA","callLegId":"ca77a6a6-6bd0-11f1-93f4-02420aef3820","callSessionId":"ca779f30-6bd0-11f1-bc4d-02420aef3820","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T11:20:10.548Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:20:10.551Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ca779f30-6bd0-11f1-bc4d-02420aef3820:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T11:20:10.552Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T11:20:10.670Z ERROR [Telnyx API error] {"path":"/calls/v3%3AkRuUKW_jut8hZ96y6OPDaQkNTCGvcy7jdw3oYNcXut71kky0vFo5EA/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T11:20:10.671Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T11:20:27.403Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:20:27.405Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have bees by the front door","providerMessageSid":"textbee:6a3525fb77015dcde175a01c"}
2026-06-19T11:20:27.411Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T11:20:27.414Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"b840f62d-d863-406e-a710-acc846ef4276","messageProviderSid":"textbee:6a3525fb77015dcde175a01c","mode":"webhook_fast_save"}
2026-06-19T11:20:27.429Z LOG [SMS cost guard disabled for testing] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:20:30.621Z LOG [Customer SMS reply attempt] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T11:20:30.621Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T11:20:30.972Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3525ff77015dcde175a139","recipientCount":1}}}
2026-06-19T11:20:30.973Z LOG [Customer SMS reply sent] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3525ff77015dcde175a139\",\"recipientCount\":1}}"}
2026-06-19T11:20:30.981Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T11:20:30.985Z LOG [Owner alert check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:20:30.986Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"OUTBOUND: Metro Pest Control: Sorry we missed your call. What can we help with today? Reply STOP to opt out.\nINBOUND: I have bees by the front door","reason":"not enough qualified details yet"}
2026-06-19T11:20:31.049Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a3525fb77015dcde175a01c"}
2026-06-19T11:20:46.351Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:20:46.351Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles Simms","providerMessageSid":"textbee:6a35260e77015dcde175a447"}
2026-06-19T11:20:46.355Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:20:46.360Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"aa1563be-0ba0-4851-b685-bb40250ab8c0","messageProviderSid":"textbee:6a35260e77015dcde175a447","mode":"webhook_fast_save"}
2026-06-19T11:20:46.368Z LOG [SMS cost guard disabled for testing] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:20:48.763Z LOG [Customer SMS reply attempt] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-19T11:20:48.763Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-19T11:20:49.049Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35261177015dcde175a546","recipientCount":1}}}
2026-06-19T11:20:49.049Z LOG [Customer SMS reply sent] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35261177015dcde175a546\",\"recipientCount\":1}}"}
2026-06-19T11:20:49.055Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-19T11:20:49.056Z LOG [Owner alert check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:20:49.057Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"OUTBOUND: Metro Pest Control: Sorry we missed your call. What can we help with today? Reply STOP to opt out.\nINBOUND: I have bees by the front door","reason":"not enough qualified details yet"}
2026-06-19T11:20:49.057Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a35260e77015dcde175a447"}
2026-06-19T11:21:05.413Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:21:05.414Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35262177015dcde175a952"}
2026-06-19T11:21:05.420Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:21:05.424Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"de8fd25e-dbf0-4760-815d-d300680efc08","messageProviderSid":"textbee:6a35262177015dcde175a952","mode":"webhook_fast_save"}
2026-06-19T11:21:05.434Z LOG [SMS cost guard disabled for testing] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:21:09.138Z LOG [Customer SMS reply attempt] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T11:21:09.138Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T11:21:09.355Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35262577015dcde175ab2c","recipientCount":1}}}
2026-06-19T11:21:09.356Z LOG [Customer SMS reply sent] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35262577015dcde175ab2c\",\"recipientCount\":1}}"}
2026-06-19T11:21:09.362Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T11:21:09.363Z LOG [Owner alert check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:21:09.365Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T11:21:09.365Z LOG [Owner alert skipped: no channel due now] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T11:21:09.365Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a35262177015dcde175a952"}
2026-06-19T11:21:26.504Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:21:26.504Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Thanks","providerMessageSid":"textbee:6a35263677015dcde175afe2"}
2026-06-19T11:21:26.509Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"qualified","mode":"webhook_fast_save"}
2026-06-19T11:21:26.516Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"8579f7ef-bf51-43c2-ae50-f84d8850c0d5","messageProviderSid":"textbee:6a35263677015dcde175afe2","mode":"webhook_fast_save"}
2026-06-19T11:21:26.522Z LOG [SMS cost guard disabled for testing] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:21:26.529Z LOG [Post-lead update mode] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"Thanks"}
2026-06-19T11:21:26.529Z LOG [Post-lead customer ack suppressed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-19T11:21:26.531Z LOG [Owner lead-update SMS check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-19T11:21:26.532Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: OUTBOUND: Metro Pest Control: Sorry we mi","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T11:21:26.532Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":313}
2026-06-19T11:21:26.719Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35263677015dcde175b00a","recipientCount":1}}}
2026-06-19T11:21:26.720Z LOG [Owner SMS TextBee result] accepted
2026-06-19T11:21:26.720Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-19T11:21:26.726Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a35263677015dcde175afe2"}
2026-06-19T11:21:55.737Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:21:55.737Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"can I add that we have ants too","providerMessageSid":"textbee:6a35265377015dcde175b8c4"}
2026-06-19T11:21:55.743Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"needs_review","mode":"webhook_fast_save"}
2026-06-19T11:21:55.748Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"94bc73a4-5213-4ecb-90ae-597b2c965460","messageProviderSid":"textbee:6a35265377015dcde175b8c4","mode":"webhook_fast_save"}
2026-06-19T11:21:55.752Z LOG [SMS cost guard disabled for testing] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:21:58.084Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T11:31:09.137Z","bodyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T11:21:58.085Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T11:21:58.086Z LOG [Owner alert check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:21:58.087Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T11:21:58.087Z LOG [Owner alert skipped: no channel due now] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T11:21:58.087Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a35265377015dcde175b8c4"}
2026-06-19T11:29:56.473Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T11:29:56.486Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T11:29:56.488Z LOG Recover Missed Call running on port 3000
2026-06-19T11:29:56.488Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T11:29:56.488Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T11:30:00.390Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:30:00.392Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"can I add that we have ants too","providerMessageSid":"textbee:6a35283877015dcde17624c1"}
2026-06-19T11:30:00.403Z LOG [Inbound SMS linked to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"qualified","mode":"webhook_fast_save"}
2026-06-19T11:30:00.414Z LOG [Incoming SMS saved to lead] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","messageId":"96ad1db5-2c71-4314-bbc8-32cb6d50c257","messageProviderSid":"textbee:6a35283877015dcde17624c1","mode":"webhook_fast_save"}
2026-06-19T11:30:00.474Z LOG [Customer SMS reply attempt] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"ai_customer_message_limit_final_notice","provider":"textbee","messageLength":139}
2026-06-19T11:30:00.475Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":139}
2026-06-19T11:30:00.796Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35283977015dcde17624f9","recipientCount":1}}}
2026-06-19T11:30:00.796Z LOG [Customer SMS reply sent] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","context":"ai_customer_message_limit_final_notice","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35283977015dcde17624f9\",\"recipientCount\":1}}"}
2026-06-19T11:30:00.806Z LOG [Owner lead-update SMS check] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-19T11:30:00.807Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Charles Simms\nPhone: +14783092224\nIssue: ants\nAddress: 33536 Unicorn Ct, Westland,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T11:30:00.808Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":257}
2026-06-19T11:30:01.075Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35283977015dcde1762527","recipientCount":1}}}
2026-06-19T11:30:01.076Z LOG [Owner SMS TextBee result] accepted
2026-06-19T11:30:01.076Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-19T11:30:01.083Z LOG [AI customer message limit reached: final notice sent and auto-replies stopped] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","inboundCount":6,"maxMessages":5}
2026-06-19T11:30:01.085Z LOG [SMS webhook async AI continuation completed] {"leadId":"b7c75b3b-4a52-4d53-9a41-b0ec92ba8e58","phone":"+14783092224","providerMessageSid":"textbee:6a35283877015dcde17624c1"}
2026-06-19T11:32:31.998Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:c8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA","callLegId":"8f915c10-6bd2-11f1-a3ec-02420aef8ea1","callSessionId":"8f915198-6bd2-11f1-8559-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T11:32:32.039Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T11:32:32.040Z LOG [Missed-call recovery triggered] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T11:32:32.052Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T11:32:42.057Z LOG [Missed-call recovery SMS attempt] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T11:32:42.058Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T11:32:43.349Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3528db77015dcde176547d","recipientCount":1}}}
2026-06-19T11:32:43.356Z LOG [Missed-call recovery SMS sent] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3528db77015dcde176547d\",\"recipientCount\":1}}"}
2026-06-19T11:32:43.364Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T11:32:43.366Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T11:32:43.506Z LOG [Telnyx voice command ok: answer]
2026-06-19T11:32:43.583Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:c8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA","callLegId":"8f915c10-6bd2-11f1-a3ec-02420aef8ea1","callSessionId":"8f915198-6bd2-11f1-8559-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T11:32:43.588Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:32:43.589Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T11:32:43.672Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T11:32:43.880Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:c8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA","callLegId":"8f915c10-6bd2-11f1-a3ec-02420aef8ea1","callSessionId":"8f915198-6bd2-11f1-8559-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T11:32:43.886Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:32:43.889Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T11:32:43.890Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T11:32:48.312Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:c8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA","callLegId":"8f915c10-6bd2-11f1-a3ec-02420aef8ea1","callSessionId":"8f915198-6bd2-11f1-8559-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T11:32:48.317Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:32:48.320Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T11:32:48.321Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T11:32:48.347Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:c8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA","callLegId":"8f915c10-6bd2-11f1-a3ec-02420aef8ea1","callSessionId":"8f915198-6bd2-11f1-8559-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T11:32:48.350Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T11:32:48.389Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8f915198-6bd2-11f1-8559-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T11:32:48.392Z ERROR [Telnyx API error] {"path":"/calls/v3%3Ac8NJdX0ZncVup_olx-0segOEwMdjsOXUDZorPOnMk_mgRfAPmveWZA/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T11:32:48.393Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T11:33:07.975Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:33:07.976Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"i need a new air conditioner unit","providerMessageSid":"textbee:6a3528f477015dcde1765e0a"}
2026-06-19T11:33:07.982Z LOG [Inbound SMS linked to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T11:33:07.988Z LOG [Incoming SMS saved to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","messageId":"4d00c701-a489-49c6-8f6a-2530fb250d0b","messageProviderSid":"textbee:6a3528f477015dcde1765e0a","mode":"webhook_fast_save"}
2026-06-19T11:33:07.995Z LOG [SMS cost guard disabled for testing] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:33:11.727Z LOG [Customer SMS reply attempt] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T11:33:11.727Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T11:33:11.937Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3528f877015dcde1765f09","recipientCount":1}}}
2026-06-19T11:33:11.938Z LOG [Customer SMS reply sent] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3528f877015dcde1765f09\",\"recipientCount\":1}}"}
2026-06-19T11:33:11.946Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T11:33:11.948Z LOG [Owner alert check] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:33:11.949Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"OUTBOUND: Metro Pest Control: Sorry we missed your call. What can we help with today? Reply STOP to opt out.\nINBOUND: i need a new air conditioner unit","reason":"not enough qualified details yet"}
2026-06-19T11:33:11.950Z LOG [SMS webhook async AI continuation completed] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","providerMessageSid":"textbee:6a3528f477015dcde1765e0a"}
2026-06-19T11:33:42.483Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:33:42.484Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 unicorn ct westland mi 48186","providerMessageSid":"textbee:6a35291577015dcde1766d2e"}
2026-06-19T11:33:42.491Z LOG [Inbound SMS linked to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:33:42.496Z LOG [Incoming SMS saved to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","messageId":"10bab824-960d-4e34-a605-6ec7da4ee9c1","messageProviderSid":"textbee:6a35291577015dcde1766d2e","mode":"webhook_fast_save"}
2026-06-19T11:33:42.505Z LOG [SMS cost guard disabled for testing] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:33:44.917Z LOG [Customer SMS reply attempt] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-19T11:33:44.917Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-19T11:33:45.638Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35291977015dcde176701d","recipientCount":1}}}
2026-06-19T11:33:45.638Z LOG [Customer SMS reply sent] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35291977015dcde176701d\",\"recipientCount\":1}}"}
2026-06-19T11:33:45.645Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-19T11:33:45.646Z LOG [Owner alert check] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:33:45.647Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"OUTBOUND: Metro Pest Control: Sorry we missed your call. What can we help with today? Reply STOP to opt out.\nINBOUND: i need a new air conditioner unit","reason":"not enough qualified details yet"}
2026-06-19T11:33:45.647Z LOG [SMS webhook async AI continuation completed] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","providerMessageSid":"textbee:6a35291577015dcde1766d2e"}
2026-06-19T11:33:58.275Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T11:33:58.276Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35292677015dcde176787e"}
2026-06-19T11:33:58.280Z LOG [Inbound SMS linked to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T11:33:58.285Z LOG [Incoming SMS saved to lead] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","messageId":"8b7bdb24-1ca5-403e-a12a-b03b057ddcc4","messageProviderSid":"textbee:6a35292677015dcde176787e","mode":"webhook_fast_save"}
2026-06-19T11:33:58.295Z LOG [SMS cost guard disabled for testing] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T11:34:02.558Z LOG [Customer SMS reply attempt] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T11:34:02.559Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T11:34:05.124Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35292c77015dcde1767c32","recipientCount":1}}}
2026-06-19T11:34:05.125Z LOG [Customer SMS reply sent] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35292c77015dcde1767c32\",\"recipientCount\":1}}"}
2026-06-19T11:34:05.133Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T11:34:05.135Z LOG [Owner alert check] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T11:34:05.138Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T11:34:05.138Z LOG [Owner alert skipped: no channel due now] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T11:34:05.138Z LOG [SMS webhook async AI continuation completed] {"leadId":"a8abd4b1-a087-4ed9-9303-e4a09c64d20f","phone":"+14783092224","providerMessageSid":"textbee:6a35292677015dcde176787e"}
2026-06-19T16:08:04.987Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17343092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Y-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w","callLegId":"0dbd6662-6bf9-11f1-9ad9-02420aef36a1","callSessionId":"0dbd605e-6bf9-11f1-89dc-02420aef36a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T16:08:05.011Z LOG [Voice routing decision] {"from":"+17343092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":false,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T16:08:05.011Z WARN [Text every inbound call skipped: invalid/unusable caller ID] {"from":"+17343092224","to":"+17342647770"}
2026-06-19T16:08:05.012Z LOG [Missed-call recovery triggered] {"key":"0dbd605e-6bf9-11f1-89dc-02420aef36a1:any_recovery","phone":"+17343092224","source":"after_hours_call","callStatus":"instant_text_only"}
2026-06-19T16:08:05.018Z LOG [Missed-call SMS delay started] {"phone":"+17343092224","source":"after_hours_call","callStatus":"instant_text_only","delaySeconds":10}
2026-06-19T16:08:15.025Z LOG [Missed-call recovery SMS attempt] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","source":"after_hours_call","callStatus":"instant_text_only","provider":"textbee"}
2026-06-19T16:08:15.025Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T16:08:15.324Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35696f77015dcde19086f4","recipientCount":1}}}
2026-06-19T16:08:15.327Z LOG [Missed-call recovery SMS sent] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","source":"after_hours_call","callStatus":"instant_text_only","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35696f77015dcde19086f4\",\"recipientCount\":1}}"}
2026-06-19T16:08:15.334Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","callStatus":"instant_text_only","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T16:08:15.759Z LOG [Telnyx voice command ok: answer]
2026-06-19T16:08:16.128Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Y-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w","callLegId":"0dbd6662-6bf9-11f1-9ad9-02420aef36a1","callSessionId":"0dbd605e-6bf9-11f1-89dc-02420aef36a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T16:08:16.132Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.answered","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-19T16:08:16.303Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T16:08:17.252Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Y-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w","callLegId":"0dbd6662-6bf9-11f1-9ad9-02420aef36a1","callSessionId":"0dbd605e-6bf9-11f1-89dc-02420aef36a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T16:08:17.257Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.started","phone":"+17343092224","from":"","to":""}
2026-06-19T16:08:17.260Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T16:08:25.588Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:Y-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w","callLegId":"0dbd6662-6bf9-11f1-9ad9-02420aef36a1","callSessionId":"0dbd605e-6bf9-11f1-89dc-02420aef36a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T16:08:25.594Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.ended","phone":"+17343092224","from":"","to":""}
2026-06-19T16:08:25.596Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T16:08:25.735Z ERROR [Telnyx API error] {"path":"/calls/v3%3AY-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T16:08:25.737Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T16:08:25.838Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Y-ob7xYaXCkemb6mmv3nXYkazeY8LTLQQ6nXEYcvynwnIXDyEdRt6w","callLegId":"0dbd6662-6bf9-11f1-9ad9-02420aef36a1","callSessionId":"0dbd605e-6bf9-11f1-89dc-02420aef36a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T16:08:25.842Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.hangup","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-19T16:08:38.631Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T16:08:38.631Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17343092224","eventType":"MESSAGE_RECEIVED","textPreview":"Have ants in bathroom ","providerMessageSid":"textbee:6a35698677015dcde1908e99"}
2026-06-19T16:08:38.635Z LOG [Inbound SMS linked to lead] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","source":"after_hours_call","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T16:08:38.638Z LOG [Incoming SMS saved to lead] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","messageId":"0cc6fac1-5661-4b3e-a112-c8d6993b41a0","messageProviderSid":"textbee:6a35698677015dcde1908e99","mode":"webhook_fast_save"}
2026-06-19T16:08:38.651Z LOG [SMS cost guard disabled for testing] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","smsRestrictionsEnabled":false}
2026-06-19T16:08:41.809Z LOG [Customer SMS reply attempt] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T16:08:41.809Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T16:08:42.226Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35698a77015dcde19090a7","recipientCount":1}}}
2026-06-19T16:08:42.227Z LOG [Customer SMS reply sent] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35698a77015dcde19090a7\",\"recipientCount\":1}}"}
2026-06-19T16:08:42.231Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T16:08:42.235Z LOG [Owner alert check] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T16:08:42.236Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","status":"intake","qualified":0,"serviceType":"ants","reason":"not enough qualified details yet"}
2026-06-19T16:08:42.236Z LOG [SMS webhook async AI continuation completed] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","providerMessageSid":"textbee:6a35698677015dcde1908e99"}
2026-06-19T16:29:56.512Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+17343092224","body":"Just checking in — do you still need help with ants? Reply with your address/city and preferred time, and Metro Pest Control can help with the next step. Reply STOP to opt out."}
2026-06-19T17:16:45.462Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T17:16:45.463Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17343092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles SIMMs 33536 Unicorn Ct Macomb MI","providerMessageSid":"textbee:6a35797d77015dcde195e9a0"}
2026-06-19T17:16:45.466Z LOG [Inbound SMS linked to lead] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","source":"after_hours_call","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T17:16:45.471Z LOG [Incoming SMS saved to lead] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","messageId":"e02e3711-1834-4f56-884d-fbb3345a9a3d","messageProviderSid":"textbee:6a35797d77015dcde195e9a0","mode":"webhook_fast_save"}
2026-06-19T17:16:45.484Z LOG [SMS cost guard disabled for testing] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","smsRestrictionsEnabled":false}
2026-06-19T17:16:49.168Z LOG [Customer SMS reply attempt] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T17:16:49.168Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T17:16:49.554Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35798177015dcde195ea15","recipientCount":1}}}
2026-06-19T17:16:49.555Z LOG [Customer SMS reply sent] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35798177015dcde195ea15\",\"recipientCount\":1}}"}
2026-06-19T17:16:49.562Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T17:16:49.564Z LOG [Owner alert check] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T17:16:49.566Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T17:16:49.566Z LOG [Owner alert skipped: no channel due now] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T17:16:49.566Z LOG [SMS webhook async AI continuation completed] {"leadId":"9bb34af4-ba1b-470f-86c9-50cbe84c4511","phone":"+17343092224","providerMessageSid":"textbee:6a35797d77015dcde195e9a0"}
2026-06-19T20:40:19.537Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347963608","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:tE_nBuPcQ8XImYSI4hHz8Wl5sOqZyDYeaALAx3H9lniZ2PEQX9Sf3w","callLegId":"161fdd5a-6c1f-11f1-ad02-02420aef8c20","callSessionId":"161fd33c-6c1f-11f1-9bd4-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T20:40:19.555Z LOG [Voice routing decision] {"from":"+17347963608","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T20:40:19.556Z LOG [Missed-call recovery triggered] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T20:40:19.565Z LOG [Missed-call SMS delay started] {"phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T20:40:29.570Z LOG [Missed-call recovery SMS attempt] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T20:40:29.571Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T20:40:29.802Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35a93e77015dcde1a3e218","recipientCount":1}}}
2026-06-19T20:40:29.806Z LOG [Missed-call recovery SMS sent] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35a93e77015dcde1a3e218\",\"recipientCount\":1}}"}
2026-06-19T20:40:29.828Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T20:40:29.829Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T20:40:29.948Z LOG [Telnyx voice command ok: answer]
2026-06-19T20:40:30.076Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17347963608","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:tE_nBuPcQ8XImYSI4hHz8Wl5sOqZyDYeaALAx3H9lniZ2PEQX9Sf3w","callLegId":"161fdd5a-6c1f-11f1-ad02-02420aef8c20","callSessionId":"161fd33c-6c1f-11f1-9bd4-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T20:40:30.080Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:40:30.081Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T20:40:30.139Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T20:40:30.380Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:tE_nBuPcQ8XImYSI4hHz8Wl5sOqZyDYeaALAx3H9lniZ2PEQX9Sf3w","callLegId":"161fdd5a-6c1f-11f1-ad02-02420aef8c20","callSessionId":"161fd33c-6c1f-11f1-9bd4-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T20:40:30.387Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:40:30.387Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T20:40:30.387Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:40:40.909Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:tE_nBuPcQ8XImYSI4hHz8Wl5sOqZyDYeaALAx3H9lniZ2PEQX9Sf3w","callLegId":"161fdd5a-6c1f-11f1-ad02-02420aef8c20","callSessionId":"161fd33c-6c1f-11f1-9bd4-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T20:40:40.915Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:40:40.915Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T20:40:40.915Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:40:41.034Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T20:40:41.112Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347963608","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:tE_nBuPcQ8XImYSI4hHz8Wl5sOqZyDYeaALAx3H9lniZ2PEQX9Sf3w","callLegId":"161fdd5a-6c1f-11f1-ad02-02420aef8c20","callSessionId":"161fd33c-6c1f-11f1-9bd4-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T20:40:41.117Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:40:41.118Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"161fd33c-6c1f-11f1-9bd4-02420aef8c20:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T20:40:51.100Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:40:51.102Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17347963608","eventType":"MESSAGE_RECEIVED","textPreview":"Ant infestation ","providerMessageSid":"textbee:6a35a95277015dcde1a3e601"}
2026-06-19T20:40:51.106Z LOG [Inbound SMS linked to lead] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T20:40:51.110Z LOG [Incoming SMS saved to lead] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","messageId":"54ba3261-3e9a-4bd4-883e-2d882409c090","messageProviderSid":"textbee:6a35a95277015dcde1a3e601","mode":"webhook_fast_save"}
2026-06-19T20:40:51.124Z LOG [SMS cost guard disabled for testing] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","smsRestrictionsEnabled":false}
2026-06-19T20:40:54.226Z LOG [Customer SMS reply attempt] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T20:40:54.227Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T20:40:54.537Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35a95677015dcde1a3e871","recipientCount":1}}}
2026-06-19T20:40:54.538Z LOG [Customer SMS reply sent] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35a95677015dcde1a3e871\",\"recipientCount\":1}}"}
2026-06-19T20:40:54.543Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T20:40:54.549Z LOG [Owner alert check] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:40:54.550Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","status":"intake","qualified":0,"serviceType":"ants","reason":"not enough qualified details yet"}
2026-06-19T20:40:54.550Z LOG [SMS webhook async AI continuation completed] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","providerMessageSid":"textbee:6a35a95277015dcde1a3e601"}
2026-06-19T20:41:24.515Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:41:24.515Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17347963608","eventType":"MESSAGE_RECEIVED","textPreview":"Stacy simms 33536 unicorn westland mi","providerMessageSid":"textbee:6a35a97477015dcde1a3eec8"}
2026-06-19T20:41:24.520Z LOG [Inbound SMS linked to lead] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T20:41:24.523Z LOG [Incoming SMS saved to lead] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","messageId":"ba5a26f1-e3bc-4526-9340-e33478aecd71","messageProviderSid":"textbee:6a35a97477015dcde1a3eec8","mode":"webhook_fast_save"}
2026-06-19T20:41:24.537Z LOG [SMS cost guard disabled for testing] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","smsRestrictionsEnabled":false}
2026-06-19T20:41:26.906Z LOG [Customer SMS reply attempt] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-19T20:41:26.906Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-19T20:41:27.097Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35a97777015dcde1a3ef16","recipientCount":1}}}
2026-06-19T20:41:27.098Z LOG [Customer SMS reply sent] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35a97777015dcde1a3ef16\",\"recipientCount\":1}}"}
2026-06-19T20:41:27.104Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-19T20:41:27.105Z LOG [Owner alert check] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:41:27.106Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","status":"intake","qualified":0,"serviceType":"ants","reason":"not enough qualified details yet"}
2026-06-19T20:41:27.106Z LOG [SMS webhook async AI continuation completed] {"leadId":"13362d96-d08b-4831-b21d-3394ebafeb26","phone":"+17347963608","providerMessageSid":"textbee:6a35a97477015dcde1a3eec8"}
2026-06-19T20:52:56.973Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T20:52:57.012Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T20:52:57.013Z LOG Recover Missed Call running on port 3000
2026-06-19T20:52:57.014Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T20:52:57.014Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T20:53:27.333Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347963608","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:ox1LGIayBI3ACyq_kpTc7SvGztAulQd5esAw4YsNBl1x1acefAa3Mw","callLegId":"ebaaf38c-6c20-11f1-ab04-a21450c80fe4","callSessionId":"ebaaedec-6c20-11f1-93ec-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T20:53:27.542Z LOG [Voice routing decision] {"from":"+17347963608","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T20:53:27.542Z LOG [Missed-call recovery triggered] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T20:53:27.552Z LOG [Missed-call SMS delay started] {"phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T20:53:37.557Z LOG [Missed-call recovery SMS attempt] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T20:53:37.561Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T20:53:38.429Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ac5277015dcde1a47381","recipientCount":1}}}
2026-06-19T20:53:38.434Z LOG [Missed-call recovery SMS sent] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ac5277015dcde1a47381\",\"recipientCount\":1}}"}
2026-06-19T20:53:38.451Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T20:53:38.454Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T20:53:38.655Z LOG [Telnyx voice command ok: answer]
2026-06-19T20:53:38.825Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17347963608","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:ox1LGIayBI3ACyq_kpTc7SvGztAulQd5esAw4YsNBl1x1acefAa3Mw","callLegId":"ebaaf38c-6c20-11f1-ab04-a21450c80fe4","callSessionId":"ebaaedec-6c20-11f1-93ec-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T20:53:38.830Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:53:38.832Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T20:53:38.915Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T20:53:39.223Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:ox1LGIayBI3ACyq_kpTc7SvGztAulQd5esAw4YsNBl1x1acefAa3Mw","callLegId":"ebaaf38c-6c20-11f1-ab04-a21450c80fe4","callSessionId":"ebaaedec-6c20-11f1-93ec-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T20:53:39.227Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:53:39.230Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T20:53:39.231Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:53:49.755Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:ox1LGIayBI3ACyq_kpTc7SvGztAulQd5esAw4YsNBl1x1acefAa3Mw","callLegId":"ebaaf38c-6c20-11f1-ab04-a21450c80fe4","callSessionId":"ebaaedec-6c20-11f1-93ec-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T20:53:49.759Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:53:49.761Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T20:53:49.761Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:53:49.880Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T20:53:49.955Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347963608","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:ox1LGIayBI3ACyq_kpTc7SvGztAulQd5esAw4YsNBl1x1acefAa3Mw","callLegId":"ebaaf38c-6c20-11f1-ab04-a21450c80fe4","callSessionId":"ebaaedec-6c20-11f1-93ec-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T20:53:49.963Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17347963608","source":"inbound_call_text_fallback"}
2026-06-19T20:53:49.967Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ebaaedec-6c20-11f1-93ec-a21450c80fe4:any_recovery","phone":"+17347963608","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T20:53:56.695Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:53:56.697Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17347963608","eventType":"MESSAGE_RECEIVED","textPreview":"Ant infestation ","providerMessageSid":"textbee:6a35ac6477015dcde1a478e1"}
2026-06-19T20:53:56.703Z LOG [Inbound SMS linked to lead] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T20:53:56.706Z LOG [Incoming SMS saved to lead] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","messageId":"941d4c08-d79e-46ef-b140-425ea19a0478","messageProviderSid":"textbee:6a35ac6477015dcde1a478e1","mode":"webhook_fast_save"}
2026-06-19T20:53:56.762Z LOG [SMS cost guard disabled for testing] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","smsRestrictionsEnabled":false}
2026-06-19T20:54:00.127Z LOG [Customer SMS reply attempt] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T20:54:00.127Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T20:54:00.340Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ac6877015dcde1a47a2a","recipientCount":1}}}
2026-06-19T20:54:00.340Z LOG [Customer SMS reply sent] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ac6877015dcde1a47a2a\",\"recipientCount\":1}}"}
2026-06-19T20:54:00.344Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T20:54:00.347Z LOG [Owner alert check] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:54:00.349Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-19T20:54:00.349Z LOG [SMS webhook async AI continuation completed] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","providerMessageSid":"textbee:6a35ac6477015dcde1a478e1"}
2026-06-19T20:54:55.289Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:54:55.289Z LOG [Incoming SMS received] {"provider":"textbee","from":"+17347963608","eventType":"MESSAGE_RECEIVED","textPreview":"Stacy Simms 33536 Unicorn Westland MI","providerMessageSid":"textbee:6a35ac9f77015dcde1a487e9"}
2026-06-19T20:54:55.295Z LOG [Inbound SMS linked to lead] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T20:54:55.301Z LOG [Incoming SMS saved to lead] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","messageId":"f3b93c11-83d7-452d-9d19-2dca7bb92c4c","messageProviderSid":"textbee:6a35ac9f77015dcde1a487e9","mode":"webhook_fast_save"}
2026-06-19T20:54:55.313Z LOG [SMS cost guard disabled for testing] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","smsRestrictionsEnabled":false}
2026-06-19T20:54:57.699Z LOG [Customer SMS reply attempt] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T20:54:57.700Z LOG [TextBee SMS attempt] {"to":"+17347963608","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T20:54:58.176Z LOG [TextBee SMS accepted] {"to":"+17347963608","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35aca277015dcde1a48851","recipientCount":1}}}
2026-06-19T20:54:58.176Z LOG [Customer SMS reply sent] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35aca277015dcde1a48851\",\"recipientCount\":1}}"}
2026-06-19T20:54:58.182Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T20:54:58.184Z LOG [Owner alert check] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:54:58.184Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T20:54:58.185Z LOG [Owner alert skipped: no channel due now] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T20:54:58.185Z LOG [SMS webhook async AI continuation completed] {"leadId":"dc51721e-fbed-4855-a16e-dd800d2fad58","phone":"+17347963608","providerMessageSid":"textbee:6a35ac9f77015dcde1a487e9"}
2026-06-19T20:58:07.002Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13135807584","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:m_sHpzX50OFfR63mmJc4nXxIKsJyusqeekl2sZ4KqINxk-Uepl6AJQ","callLegId":"92334060-6c21-11f1-9397-eabbb84a066f","callSessionId":"92333372-6c21-11f1-a580-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T20:58:07.013Z LOG [Voice routing decision] {"from":"+13135807584","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T20:58:07.013Z LOG [Missed-call recovery triggered] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T20:58:07.020Z LOG [Missed-call SMS delay started] {"phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T20:58:17.026Z LOG [Missed-call recovery SMS attempt] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T20:58:17.026Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T20:58:17.342Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ad6977015dcde1a49f91","recipientCount":1}}}
2026-06-19T20:58:17.345Z LOG [Missed-call recovery SMS sent] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ad6977015dcde1a49f91\",\"recipientCount\":1}}"}
2026-06-19T20:58:17.358Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T20:58:17.359Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T20:58:17.689Z LOG [Telnyx voice command ok: answer]
2026-06-19T20:58:18.079Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:m_sHpzX50OFfR63mmJc4nXxIKsJyusqeekl2sZ4KqINxk-Uepl6AJQ","callLegId":"92334060-6c21-11f1-9397-eabbb84a066f","callSessionId":"92333372-6c21-11f1-a580-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T20:58:18.084Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T20:58:18.088Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T20:58:18.233Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T20:58:19.164Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:m_sHpzX50OFfR63mmJc4nXxIKsJyusqeekl2sZ4KqINxk-Uepl6AJQ","callLegId":"92334060-6c21-11f1-9397-eabbb84a066f","callSessionId":"92333372-6c21-11f1-a580-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T20:58:19.168Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T20:58:19.171Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T20:58:19.171Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:58:29.742Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:m_sHpzX50OFfR63mmJc4nXxIKsJyusqeekl2sZ4KqINxk-Uepl6AJQ","callLegId":"92334060-6c21-11f1-9397-eabbb84a066f","callSessionId":"92333372-6c21-11f1-a580-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T20:58:29.745Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T20:58:29.748Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T20:58:29.749Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T20:58:29.918Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T20:58:30.148Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:m_sHpzX50OFfR63mmJc4nXxIKsJyusqeekl2sZ4KqINxk-Uepl6AJQ","callLegId":"92334060-6c21-11f1-9397-eabbb84a066f","callSessionId":"92333372-6c21-11f1-a580-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T20:58:30.157Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T20:58:30.160Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"92333372-6c21-11f1-a580-eabbb84a066f:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T20:58:41.139Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:58:41.140Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Rats in basement please help!!!","providerMessageSid":"textbee:6a35ad8177015dcde1a4a28f"}
2026-06-19T20:58:41.145Z LOG [Inbound SMS linked to lead] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T20:58:41.148Z LOG [Incoming SMS saved to lead] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","messageId":"f80687e5-1492-4f10-9a77-4ad6c7104e0e","messageProviderSid":"textbee:6a35ad8177015dcde1a4a28f","mode":"webhook_fast_save"}
2026-06-19T20:58:41.160Z LOG [SMS cost guard disabled for testing] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T20:58:43.824Z LOG [Customer SMS reply attempt] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T20:58:43.824Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T20:58:44.006Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ad8477015dcde1a4a34a","recipientCount":1}}}
2026-06-19T20:58:44.007Z LOG [Customer SMS reply sent] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ad8477015dcde1a4a34a\",\"recipientCount\":1}}"}
2026-06-19T20:58:44.011Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T20:58:44.012Z LOG [Owner alert check] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:58:44.013Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","status":"intake","qualified":0,"serviceType":"Mice/Rats","reason":"not enough qualified details yet"}
2026-06-19T20:58:44.014Z LOG [SMS webhook async AI continuation completed] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","providerMessageSid":"textbee:6a35ad8177015dcde1a4a28f"}
2026-06-19T20:59:15.452Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T20:59:15.453Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Charlie Simms and 33536 Unicorn Court","providerMessageSid":"textbee:6a35ada377015dcde1a4a73d"}
2026-06-19T20:59:15.457Z LOG [Inbound SMS linked to lead] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T20:59:15.463Z LOG [Incoming SMS saved to lead] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","messageId":"af729257-2c23-44e1-8392-1144795ec35c","messageProviderSid":"textbee:6a35ada377015dcde1a4a73d","mode":"webhook_fast_save"}
2026-06-19T20:59:15.472Z LOG [SMS cost guard disabled for testing] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T20:59:17.159Z LOG [Customer SMS reply attempt] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T20:59:17.159Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T20:59:17.448Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ada577015dcde1a4a787","recipientCount":1}}}
2026-06-19T20:59:17.448Z LOG [Customer SMS reply sent] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ada577015dcde1a4a787\",\"recipientCount\":1}}"}
2026-06-19T20:59:17.455Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T20:59:17.457Z LOG [Owner alert check] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T20:59:17.458Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T20:59:17.458Z LOG [Owner alert skipped: no channel due now] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T20:59:17.458Z LOG [SMS webhook async AI continuation completed] {"leadId":"0e78e964-07fb-445b-a304-6e128e4e7cf0","phone":"+13135807584","providerMessageSid":"textbee:6a35ada377015dcde1a4a73d"}
2026-06-19T21:01:07.595Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13135807584","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:29kC8M8j1NV8U1R7KANe9orHg1uSnGwElnHb3x-jWKKXccEVtNpjCQ","callLegId":"fdbb2aa0-6c21-11f1-a996-02420aef39a1","callSessionId":"fdbb25d2-6c21-11f1-9042-02420aef39a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:01:07.607Z LOG [Voice routing decision] {"from":"+13135807584","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:01:07.607Z LOG [Missed-call recovery triggered] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:01:07.622Z LOG [Missed-call SMS delay started] {"phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:01:17.670Z LOG [Missed-call recovery SMS attempt] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:01:17.670Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:01:21.882Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ae2077015dcde1a51ca1","recipientCount":1}}}
2026-06-19T21:01:21.885Z LOG [Missed-call recovery SMS sent] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ae2077015dcde1a51ca1\",\"recipientCount\":1}}"}
2026-06-19T21:01:21.898Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:01:21.899Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:01:22.321Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:01:22.696Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:29kC8M8j1NV8U1R7KANe9orHg1uSnGwElnHb3x-jWKKXccEVtNpjCQ","callLegId":"fdbb2aa0-6c21-11f1-a996-02420aef39a1","callSessionId":"fdbb25d2-6c21-11f1-9042-02420aef39a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:01:22.700Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:01:22.701Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:01:22.840Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:01:23.337Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:29kC8M8j1NV8U1R7KANe9orHg1uSnGwElnHb3x-jWKKXccEVtNpjCQ","callLegId":"fdbb2aa0-6c21-11f1-a996-02420aef39a1","callSessionId":"fdbb25d2-6c21-11f1-9042-02420aef39a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:01:23.339Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:01:23.340Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:01:23.340Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:01:33.912Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:29kC8M8j1NV8U1R7KANe9orHg1uSnGwElnHb3x-jWKKXccEVtNpjCQ","callLegId":"fdbb2aa0-6c21-11f1-a996-02420aef39a1","callSessionId":"fdbb25d2-6c21-11f1-9042-02420aef39a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:01:33.916Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:01:33.916Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:01:33.916Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:01:34.160Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T21:01:34.331Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:29kC8M8j1NV8U1R7KANe9orHg1uSnGwElnHb3x-jWKKXccEVtNpjCQ","callLegId":"fdbb2aa0-6c21-11f1-a996-02420aef39a1","callSessionId":"fdbb25d2-6c21-11f1-9042-02420aef39a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:01:34.335Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:01:34.335Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fdbb25d2-6c21-11f1-9042-02420aef39a1:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:01:37.754Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:01:37.754Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Help repair my broken clock! It's been going off every 10 seconds","providerMessageSid":"textbee:6a35ae3077015dcde1a52be1"}
2026-06-19T21:01:37.759Z LOG [Inbound SMS linked to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T21:01:37.761Z LOG [Incoming SMS saved to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","messageId":"0df89bd3-7712-446f-af8f-94760fec4e66","messageProviderSid":"textbee:6a35ae3077015dcde1a52be1","mode":"webhook_fast_save"}
2026-06-19T21:01:37.765Z LOG [SMS cost guard disabled for testing] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:01:40.594Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T21:08:43.822Z","bodyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:01:40.595Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:01:40.596Z LOG [Owner alert check] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:01:40.597Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"serviceType":"Pest Control","reason":"not enough qualified details yet"}
2026-06-19T21:01:40.597Z LOG [SMS webhook async AI continuation completed] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","providerMessageSid":"textbee:6a35ae3077015dcde1a52be1"}
2026-06-19T21:04:13.785Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:04:13.786Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"How about hornets in my attic? And can you help fix the light up there? The swit","providerMessageSid":"textbee:6a35aecd77015dcde1a590a8"}
2026-06-19T21:04:13.791Z LOG [Inbound SMS linked to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:04:13.797Z LOG [Incoming SMS saved to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","messageId":"5e65f49d-b3d0-49ca-bedd-6a34efa51f6a","messageProviderSid":"textbee:6a35aecd77015dcde1a590a8","mode":"webhook_fast_save"}
2026-06-19T21:04:13.802Z LOG [SMS cost guard disabled for testing] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:04:15.811Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T21:08:43.822Z","bodyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:04:15.812Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:04:15.813Z LOG [Owner alert check] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:04:15.814Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"serviceType":"Pest Control","reason":"not enough qualified details yet"}
2026-06-19T21:04:15.814Z LOG [SMS webhook async AI continuation completed] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","providerMessageSid":"textbee:6a35aecd77015dcde1a590a8"}
2026-06-19T21:05:04.747Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:05:04.747Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Hornets are in my attic help please!","providerMessageSid":"textbee:6a35af0077015dcde1a59b87"}
2026-06-19T21:05:04.754Z LOG [Inbound SMS linked to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:05:04.767Z LOG [Incoming SMS saved to lead] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","messageId":"929de1c4-b289-45b1-a43f-108e806af3ba","messageProviderSid":"textbee:6a35af0077015dcde1a59b87","mode":"webhook_fast_save"}
2026-06-19T21:05:04.775Z LOG [SMS cost guard disabled for testing] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:05:10.152Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T21:08:43.822Z","bodyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:05:10.153Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T21:05:10.155Z LOG [Owner alert check] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:05:10.156Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","status":"intake","qualified":0,"serviceType":"Pest Control","reason":"not enough qualified details yet"}
2026-06-19T21:05:10.157Z LOG [SMS webhook async AI continuation completed] {"leadId":"e7c457fa-4653-4dd3-a07c-27363d271ad4","phone":"+13135807584","providerMessageSid":"textbee:6a35af0077015dcde1a59b87"}
2026-06-19T21:15:32.682Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T21:15:32.765Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T21:15:32.768Z LOG Recover Missed Call running on port 3000
2026-06-19T21:15:32.768Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T21:15:32.768Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T21:16:09.772Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:16:09.775Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Help repair my broken clock! It's been going off every 10 seconds","providerMessageSid":"textbee:6a35b19977015dcde1a6818b"}
2026-06-19T21:16:09.785Z LOG [Inbound SMS linked to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T21:16:09.797Z LOG [Incoming SMS saved to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","messageId":"2ffa7623-5a0c-497d-a55a-a011ba13c557","messageProviderSid":"textbee:6a35b19977015dcde1a6818b","mode":"webhook_fast_save"}
2026-06-19T21:16:09.809Z LOG [SMS cost guard disabled for testing] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:16:13.474Z LOG [Customer SMS reply attempt] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","messageLength":150}
2026-06-19T21:16:13.475Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-19T21:16:14.199Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b19e77015dcde1a683d4","recipientCount":1}}}
2026-06-19T21:16:14.199Z LOG [Customer SMS reply sent] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b19e77015dcde1a683d4\",\"recipientCount\":1}}"}
2026-06-19T21:16:14.205Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We handle pest control requests, so the office may not be the right place for Roofing. What pest issue are you dealing with today?"}
2026-06-19T21:16:14.208Z LOG [Owner alert check] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:16:14.209Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T21:16:14.210Z LOG [SMS webhook async AI continuation completed] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","providerMessageSid":"textbee:6a35b19977015dcde1a6818b"}
2026-06-19T21:19:03.317Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:19:03.318Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"There's a ton of ants in my room","providerMessageSid":"textbee:6a35b24577015dcde1a6a486"}
2026-06-19T21:19:03.321Z LOG [Inbound SMS linked to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:19:03.325Z LOG [Incoming SMS saved to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","messageId":"766583d8-7f99-4d3e-9d5f-7b07ed75b60e","messageProviderSid":"textbee:6a35b24577015dcde1a6a486","mode":"webhook_fast_save"}
2026-06-19T21:19:03.336Z LOG [SMS cost guard disabled for testing] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:19:03.342Z LOG [Business-related inbound revived AI intake] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"intake","bodyPreview":"There's a ton of ants in my room"}
2026-06-19T21:19:05.606Z LOG [Customer SMS reply attempt] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T21:19:05.607Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T21:19:06.762Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b24a77015dcde1a6a71d","recipientCount":1}}}
2026-06-19T21:19:06.762Z LOG [Customer SMS reply sent] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b24a77015dcde1a6a71d\",\"recipientCount\":1}}"}
2026-06-19T21:19:06.767Z LOG [Owner alert check] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:19:06.769Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-19T21:19:06.769Z LOG [SMS webhook async AI continuation completed] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","providerMessageSid":"textbee:6a35b24577015dcde1a6a486"}
2026-06-19T21:19:54.524Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:19:54.524Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13135807584","eventType":"MESSAGE_RECEIVED","textPreview":"Hugh Mongus and 123 Sesame Street","providerMessageSid":"textbee:6a35b27a77015dcde1a6bf1a"}
2026-06-19T21:19:54.529Z LOG [Inbound SMS linked to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:19:54.532Z LOG [Incoming SMS saved to lead] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","messageId":"a4bd1181-10ae-4766-b927-df36db192347","messageProviderSid":"textbee:6a35b27a77015dcde1a6bf1a","mode":"webhook_fast_save"}
2026-06-19T21:19:54.550Z LOG [SMS cost guard disabled for testing] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","smsRestrictionsEnabled":false}
2026-06-19T21:19:56.489Z LOG [Customer SMS reply attempt] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T21:19:56.489Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T21:19:57.243Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b27d77015dcde1a6c081","recipientCount":1}}}
2026-06-19T21:19:57.243Z LOG [Customer SMS reply sent] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b27d77015dcde1a6c081\",\"recipientCount\":1}}"}
2026-06-19T21:19:57.252Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T21:19:57.255Z LOG [Owner alert check] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:19:57.256Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T21:19:57.256Z LOG [Owner alert skipped: no channel due now] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T21:19:57.256Z LOG [SMS webhook async AI continuation completed] {"leadId":"3b074416-f508-4361-8eb5-0f88603a8068","phone":"+13135807584","providerMessageSid":"textbee:6a35b27a77015dcde1a6bf1a"}
2026-06-19T21:21:59.047Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17344474553","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Vnvcxmit0B1D-ToJpPh3MAe4twx4fWq3k6ALpJUgQNjcHuTgf3UvbQ","callLegId":"e7edc11c-6c24-11f1-a9d8-b202a694c429","callSessionId":"e7edba96-6c24-11f1-8634-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:21:59.082Z LOG [Voice routing decision] {"from":"+17344474553","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:21:59.083Z LOG [Missed-call recovery triggered] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:21:59.089Z LOG [Missed-call SMS delay started] {"phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:22:09.096Z LOG [Missed-call recovery SMS attempt] {"leadId":"7eb3f057-0ab6-484d-8266-7ae075e9dba0","phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:22:09.096Z LOG [TextBee SMS attempt] {"to":"+17344474553","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:22:09.339Z LOG [TextBee SMS accepted] {"to":"+17344474553","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b30177015dcde1a6d6d9","recipientCount":1}}}
2026-06-19T21:22:09.343Z LOG [Missed-call recovery SMS sent] {"leadId":"7eb3f057-0ab6-484d-8266-7ae075e9dba0","phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b30177015dcde1a6d6d9\",\"recipientCount\":1}}"}
2026-06-19T21:22:09.349Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7eb3f057-0ab6-484d-8266-7ae075e9dba0","phone":"+17344474553","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:22:09.350Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:22:09.577Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:22:09.615Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17344474553","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Vnvcxmit0B1D-ToJpPh3MAe4twx4fWq3k6ALpJUgQNjcHuTgf3UvbQ","callLegId":"e7edc11c-6c24-11f1-a9d8-b202a694c429","callSessionId":"e7edba96-6c24-11f1-8634-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:22:09.619Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:22:09.619Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:22:09.697Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:22:09.999Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Vnvcxmit0B1D-ToJpPh3MAe4twx4fWq3k6ALpJUgQNjcHuTgf3UvbQ","callLegId":"e7edc11c-6c24-11f1-a9d8-b202a694c429","callSessionId":"e7edba96-6c24-11f1-8634-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:22:10.006Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:22:10.006Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:22:10.007Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:22:20.510Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Vnvcxmit0B1D-ToJpPh3MAe4twx4fWq3k6ALpJUgQNjcHuTgf3UvbQ","callLegId":"e7edc11c-6c24-11f1-a9d8-b202a694c429","callSessionId":"e7edba96-6c24-11f1-8634-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:22:20.513Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:22:20.514Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:22:20.514Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:22:20.637Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T21:22:20.706Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17344474553","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Vnvcxmit0B1D-ToJpPh3MAe4twx4fWq3k6ALpJUgQNjcHuTgf3UvbQ","callLegId":"e7edc11c-6c24-11f1-a9d8-b202a694c429","callSessionId":"e7edba96-6c24-11f1-8634-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:22:20.710Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:22:20.710Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7edba96-6c24-11f1-8634-b202a694c429:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:23:06.532Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17344474553","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:HRRsYSW6lRT0BStn6YZeyXxNaUDfNsqDPrcQhqhRMt0f2bYdBJ3NkA","callLegId":"1012daa6-6c25-11f1-8230-02420aef34a1","callSessionId":"1012d6fa-6c25-11f1-a461-02420aef34a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:23:06.537Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+17344474553","to":"+17342647770"}
2026-06-19T21:23:42.430Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17344474553","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:HRRsYSW6lRT0BStn6YZeyXxNaUDfNsqDPrcQhqhRMt0f2bYdBJ3NkA","callLegId":"1012daa6-6c25-11f1-8230-02420aef34a1","callSessionId":"1012d6fa-6c25-11f1-a461-02420aef34a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:23:42.430Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+17344474553","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-19T21:23:48.353Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13135807584","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Z0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw","callLegId":"28deabbe-6c25-11f1-917a-b60679eef3d4","callSessionId":"28dea6b4-6c25-11f1-b04a-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:23:48.377Z LOG [Voice routing decision] {"from":"+13135807584","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:23:48.377Z LOG [Missed-call recovery triggered] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:23:48.389Z LOG [Missed-call SMS delay started] {"phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:23:58.398Z LOG [Missed-call recovery SMS attempt] {"leadId":"526efb51-3ed4-4547-9fc3-abab69cc53a5","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:23:58.399Z LOG [TextBee SMS attempt] {"to":"+13135807584","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:23:58.608Z LOG [TextBee SMS accepted] {"to":"+13135807584","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b36e77015dcde1a6e64b","recipientCount":1}}}
2026-06-19T21:23:58.611Z LOG [Missed-call recovery SMS sent] {"leadId":"526efb51-3ed4-4547-9fc3-abab69cc53a5","phone":"+13135807584","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b36e77015dcde1a6e64b\",\"recipientCount\":1}}"}
2026-06-19T21:23:58.621Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"526efb51-3ed4-4547-9fc3-abab69cc53a5","phone":"+13135807584","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:23:58.679Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:23:58.948Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:23:59.326Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Z0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw","callLegId":"28deabbe-6c25-11f1-917a-b60679eef3d4","callSessionId":"28dea6b4-6c25-11f1-b04a-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:23:59.331Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:23:59.332Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:23:59.462Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:24:00.494Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Z0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw","callLegId":"28deabbe-6c25-11f1-917a-b60679eef3d4","callSessionId":"28dea6b4-6c25-11f1-b04a-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:24:00.502Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:24:00.502Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:24:00.503Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:24:08.012Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13135807584","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Z0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw","callLegId":"28deabbe-6c25-11f1-917a-b60679eef3d4","callSessionId":"28dea6b4-6c25-11f1-b04a-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:24:08.019Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:24:08.019Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:24:08.025Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:Z0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw","callLegId":"28deabbe-6c25-11f1-917a-b60679eef3d4","callSessionId":"28dea6b4-6c25-11f1-b04a-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:24:08.030Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13135807584","source":"inbound_call_text_fallback"}
2026-06-19T21:24:08.030Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28dea6b4-6c25-11f1-b04a-b60679eef3d4:any_recovery","phone":"+13135807584","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:24:08.031Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:24:08.185Z ERROR [Telnyx API error] {"path":"/calls/v3%3AZ0fprWYiHrYDWrsNSSZ8JazETaq7ay5IyN9n6HEKdAfw9-Ws_YTAAw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T21:24:08.188Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T21:24:29.085Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17344474553","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:ZIHSd2nwx6JmABtYyG9J_iA4HO33ALQsp6NubVVyYtWzYf9TEnP5wA","callLegId":"411c2d32-6c25-11f1-9c93-b60679eef3d4","callSessionId":"411c2698-6c25-11f1-a5db-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:24:29.091Z LOG [Voice routing decision] {"from":"+17344474553","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:24:29.091Z LOG [Missed-call recovery triggered] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:24:29.098Z LOG [Missed-call SMS delay started] {"phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:24:39.103Z LOG [Initial missed-call SMS duplicate suppressed before send] {"leadId":"7eb3f057-0ab6-484d-8266-7ae075e9dba0","phone":"+17344474553","source":"inbound_call_text","callStatus":"text_every_inbound_call","duplicateWindowSeconds":600}
2026-06-19T21:24:39.106Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:24:39.360Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:24:39.638Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17344474553","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:ZIHSd2nwx6JmABtYyG9J_iA4HO33ALQsp6NubVVyYtWzYf9TEnP5wA","callLegId":"411c2d32-6c25-11f1-9c93-b60679eef3d4","callSessionId":"411c2698-6c25-11f1-a5db-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:24:39.641Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:24:39.641Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:24:39.776Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:24:40.568Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:ZIHSd2nwx6JmABtYyG9J_iA4HO33ALQsp6NubVVyYtWzYf9TEnP5wA","callLegId":"411c2d32-6c25-11f1-9c93-b60679eef3d4","callSessionId":"411c2698-6c25-11f1-a5db-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:24:40.573Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:24:40.573Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:24:40.574Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:24:51.107Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:ZIHSd2nwx6JmABtYyG9J_iA4HO33ALQsp6NubVVyYtWzYf9TEnP5wA","callLegId":"411c2d32-6c25-11f1-9c93-b60679eef3d4","callSessionId":"411c2698-6c25-11f1-a5db-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:24:51.112Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:24:51.113Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:24:51.113Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:24:51.276Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T21:24:51.553Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17344474553","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:ZIHSd2nwx6JmABtYyG9J_iA4HO33ALQsp6NubVVyYtWzYf9TEnP5wA","callLegId":"411c2d32-6c25-11f1-9c93-b60679eef3d4","callSessionId":"411c2698-6c25-11f1-a5db-b60679eef3d4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:24:51.557Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17344474553","source":"inbound_call_text_fallback"}
2026-06-19T21:24:51.557Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"411c2698-6c25-11f1-a5db-b60679eef3d4:any_recovery","phone":"+17344474553","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:26:34.995Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:MnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw","callLegId":"8c1a6650-6c25-11f1-8ac0-02420aef94a1","callSessionId":"8c1a59b2-6c25-11f1-83ec-02420aef94a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:26:35.009Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:26:35.009Z LOG [Missed-call recovery triggered] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:26:35.018Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:26:45.023Z LOG [Missed-call recovery SMS attempt] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:26:45.023Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:26:45.354Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b41577015dcde1a707ad","recipientCount":1}}}
2026-06-19T21:26:45.359Z LOG [Missed-call recovery SMS sent] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b41577015dcde1a707ad\",\"recipientCount\":1}}"}
2026-06-19T21:26:45.378Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:26:45.378Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:26:45.965Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:26:46.326Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:MnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw","callLegId":"8c1a6650-6c25-11f1-8ac0-02420aef94a1","callSessionId":"8c1a59b2-6c25-11f1-83ec-02420aef94a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:26:46.331Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:26:46.331Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:26:46.474Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:26:47.445Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:MnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw","callLegId":"8c1a6650-6c25-11f1-8ac0-02420aef94a1","callSessionId":"8c1a59b2-6c25-11f1-83ec-02420aef94a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:26:47.451Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:26:47.451Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:26:47.452Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:26:52.557Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:MnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw","callLegId":"8c1a6650-6c25-11f1-8ac0-02420aef94a1","callSessionId":"8c1a59b2-6c25-11f1-83ec-02420aef94a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:26:52.563Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:26:52.563Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:26:52.564Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:26:52.715Z ERROR [Telnyx API error] {"path":"/calls/v3%3AMnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T21:26:52.715Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T21:26:52.793Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:MnGSKB8h_qkfrQBno3O1E2ixB0IN-7002qToy1QASBYdHWJulYVMjw","callLegId":"8c1a6650-6c25-11f1-8ac0-02420aef94a1","callSessionId":"8c1a59b2-6c25-11f1-83ec-02420aef94a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:26:52.800Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:26:52.801Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8c1a59b2-6c25-11f1-83ec-02420aef94a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:30:57.253Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:30:57.253Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"ant problem","providerMessageSid":"textbee:6a35b51177015dcde1a72e85"}
2026-06-19T21:30:57.260Z LOG [Inbound SMS linked to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T21:30:57.267Z LOG [Incoming SMS saved to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","messageId":"5998102c-d32b-4094-80ff-01e01630e981","messageProviderSid":"textbee:6a35b51177015dcde1a72e85","mode":"webhook_fast_save"}
2026-06-19T21:30:57.276Z LOG [SMS cost guard disabled for testing] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:30:57.284Z LOG [Business-related inbound revived AI intake] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"intake","bodyPreview":"ant problem"}
2026-06-19T21:31:00.378Z LOG [Customer SMS reply attempt] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T21:31:00.378Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T21:31:00.857Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b51577015dcde1a72f32","recipientCount":1}}}
2026-06-19T21:31:00.857Z LOG [Customer SMS reply sent] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b51577015dcde1a72f32\",\"recipientCount\":1}}"}
2026-06-19T21:31:00.864Z LOG [Owner alert check] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:31:00.866Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-19T21:31:00.867Z LOG [SMS webhook async AI continuation completed] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","providerMessageSid":"textbee:6a35b51177015dcde1a72e85"}
2026-06-19T21:31:24.262Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:31:24.262Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35b52c77015dcde1a73484"}
2026-06-19T21:31:24.267Z LOG [Inbound SMS linked to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:31:24.271Z LOG [Incoming SMS saved to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","messageId":"95fc64ee-34c6-4c14-81c3-843bc1f0379d","messageProviderSid":"textbee:6a35b52c77015dcde1a73484","mode":"webhook_fast_save"}
2026-06-19T21:31:24.278Z LOG [SMS cost guard disabled for testing] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:31:26.930Z LOG [Customer SMS reply attempt] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-19T21:31:26.930Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-19T21:31:27.118Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b52f77015dcde1a734ee","recipientCount":1}}}
2026-06-19T21:31:27.118Z LOG [Customer SMS reply sent] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b52f77015dcde1a734ee\",\"recipientCount\":1}}"}
2026-06-19T21:31:27.123Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-19T21:31:27.124Z LOG [Owner alert check] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:31:27.126Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-19T21:31:27.126Z LOG [SMS webhook async AI continuation completed] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","providerMessageSid":"textbee:6a35b52c77015dcde1a73484"}
2026-06-19T21:31:39.664Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:31:39.665Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a35b53b77015dcde1a73757"}
2026-06-19T21:31:39.669Z LOG [Inbound SMS linked to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:31:39.675Z LOG [Incoming SMS saved to lead] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","messageId":"7bf496c8-91db-4cd2-a3b3-692908955412","messageProviderSid":"textbee:6a35b53b77015dcde1a73757","mode":"webhook_fast_save"}
2026-06-19T21:31:39.683Z LOG [SMS cost guard disabled for testing] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:31:43.291Z LOG [Customer SMS reply attempt] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T21:31:43.291Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T21:31:43.698Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b53f77015dcde1a738e7","recipientCount":1}}}
2026-06-19T21:31:43.699Z LOG [Customer SMS reply sent] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b53f77015dcde1a738e7\",\"recipientCount\":1}}"}
2026-06-19T21:31:43.705Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T21:31:43.707Z LOG [Owner alert check] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:31:43.708Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-19T21:31:43.708Z LOG [Owner alert skipped: no channel due now] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-19T21:31:43.708Z LOG [SMS webhook async AI continuation completed] {"leadId":"94dbb1a0-9783-4552-bba1-9c53d81be6be","phone":"+14783092224","providerMessageSid":"textbee:6a35b53b77015dcde1a73757"}
2026-06-19T21:42:46.442Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:-43x0xR-3xGAMFWdYLDOB8VMAYTXx_333hwXkR3FclsPSipAcuFmPQ","callLegId":"cf6be350-6c27-11f1-80a4-02420aef8ba1","callSessionId":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:42:46.454Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:42:46.455Z LOG [Missed-call recovery triggered] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:42:46.463Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:42:56.466Z LOG [Missed-call recovery SMS attempt] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:42:56.467Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:42:56.894Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b7e177015dcde1a7c3a7","recipientCount":1}}}
2026-06-19T21:42:56.897Z LOG [Missed-call recovery SMS sent] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b7e177015dcde1a7c3a7\",\"recipientCount\":1}}"}
2026-06-19T21:42:56.901Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:42:56.902Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:42:57.045Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:42:57.207Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:-43x0xR-3xGAMFWdYLDOB8VMAYTXx_333hwXkR3FclsPSipAcuFmPQ","callLegId":"cf6be350-6c27-11f1-80a4-02420aef8ba1","callSessionId":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:42:57.210Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:42:57.211Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:42:57.290Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:42:57.525Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:-43x0xR-3xGAMFWdYLDOB8VMAYTXx_333hwXkR3FclsPSipAcuFmPQ","callLegId":"cf6be350-6c27-11f1-80a4-02420aef8ba1","callSessionId":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:42:57.529Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:42:57.529Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:42:57.529Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:43:08.054Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:-43x0xR-3xGAMFWdYLDOB8VMAYTXx_333hwXkR3FclsPSipAcuFmPQ","callLegId":"cf6be350-6c27-11f1-80a4-02420aef8ba1","callSessionId":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:43:08.057Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:43:08.060Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:43:08.060Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:43:08.181Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T21:43:08.258Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:-43x0xR-3xGAMFWdYLDOB8VMAYTXx_333hwXkR3FclsPSipAcuFmPQ","callLegId":"cf6be350-6c27-11f1-80a4-02420aef8ba1","callSessionId":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:43:08.262Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:43:08.262Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cf6bd608-6c27-11f1-9e2c-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:43:32.292Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:43:32.293Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Need bee help","providerMessageSid":"textbee:6a35b80477015dcde1a7c903"}
2026-06-19T21:43:32.299Z LOG [Inbound SMS linked to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T21:43:32.305Z LOG [Incoming SMS saved to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","messageId":"68c5d10c-3f4f-44e8-9d30-e6ed4884fd1f","messageProviderSid":"textbee:6a35b80477015dcde1a7c903","mode":"webhook_fast_save"}
2026-06-19T21:43:32.310Z LOG [SMS cost guard disabled for testing] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:43:32.314Z LOG [Business-related inbound revived AI intake] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","status":"intake","bodyPreview":"Need bee help"}
2026-06-19T21:43:34.928Z LOG [Customer SMS reply attempt] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T21:43:34.928Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T21:43:35.182Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b80777015dcde1a7c960","recipientCount":1}}}
2026-06-19T21:43:35.182Z LOG [Customer SMS reply sent] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b80777015dcde1a7c960\",\"recipientCount\":1}}"}
2026-06-19T21:43:35.189Z LOG [Owner alert check] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:43:35.191Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T21:43:35.192Z LOG [SMS webhook async AI continuation completed] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","providerMessageSid":"textbee:6a35b80477015dcde1a7c903"}
2026-06-19T21:43:58.146Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:43:58.147Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms 33536 Unicorn Ct Westland","providerMessageSid":"textbee:6a35b81e77015dcde1a7cb84"}
2026-06-19T21:43:58.153Z LOG [Inbound SMS linked to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:43:58.156Z LOG [Incoming SMS saved to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","messageId":"629308fc-1242-43a7-9428-5080de66ecac","messageProviderSid":"textbee:6a35b81e77015dcde1a7cb84","mode":"webhook_fast_save"}
2026-06-19T21:43:58.161Z LOG [SMS cost guard disabled for testing] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:44:00.973Z LOG [Customer SMS reply attempt] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-19T21:44:00.974Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-19T21:44:01.734Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35b82277015dcde1a7ccc0","recipientCount":1}}}
2026-06-19T21:44:01.734Z LOG [Customer SMS reply sent] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35b82277015dcde1a7ccc0\",\"recipientCount\":1}}"}
2026-06-19T21:44:01.743Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Thanks, Chuck! What level of urgency do you have for the wasp issue?"}
2026-06-19T21:44:01.745Z LOG [Owner alert check] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true}
2026-06-19T21:44:01.746Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T21:44:01.746Z LOG [SMS webhook async AI continuation completed] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","providerMessageSid":"textbee:6a35b81e77015dcde1a7cb84"}
2026-06-19T21:44:24.071Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:44:24.071Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"tomorrow","providerMessageSid":"textbee:6a35b83877015dcde1a7cffc"}
2026-06-19T21:44:24.075Z LOG [Inbound SMS linked to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:44:24.078Z LOG [Incoming SMS saved to lead] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","messageId":"cfd92f84-a0d1-4a92-8091-f131d51aad25","messageProviderSid":"textbee:6a35b83877015dcde1a7cffc","mode":"webhook_fast_save"}
2026-06-19T21:44:24.083Z LOG [SMS cost guard disabled for testing] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:44:24.087Z LOG [Unrelated inbound saved without customer reply] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","businessType":"pest","bodyPreview":"tomorrow"}
2026-06-19T21:44:24.087Z LOG [SMS webhook async AI continuation completed] {"leadId":"b88d0179-a945-42b9-8b5a-da20502fad92","phone":"+14783092224","providerMessageSid":"textbee:6a35b83877015dcde1a7cffc"}
2026-06-19T21:53:56.071Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T21:53:56.085Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T21:53:56.086Z LOG Recover Missed Call running on port 3000
2026-06-19T21:53:56.087Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T21:53:56.087Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T21:54:18.295Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:JkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q","callLegId":"6bb631f6-6c29-11f1-ae21-02420aef3f20","callSessionId":"6bb62cba-6c29-11f1-b015-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T21:54:18.337Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T21:54:18.338Z LOG [Missed-call recovery triggered] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T21:54:18.348Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T21:54:28.354Z LOG [Missed-call recovery SMS attempt] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T21:54:28.360Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T21:54:28.738Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ba9577015dcde1a8679e","recipientCount":1}}}
2026-06-19T21:54:28.744Z LOG [Missed-call recovery SMS sent] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ba9577015dcde1a8679e\",\"recipientCount\":1}}"}
2026-06-19T21:54:28.754Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T21:54:28.756Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T21:54:29.161Z LOG [Telnyx voice command ok: answer]
2026-06-19T21:54:29.384Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:JkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q","callLegId":"6bb631f6-6c29-11f1-ae21-02420aef3f20","callSessionId":"6bb62cba-6c29-11f1-b015-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T21:54:29.388Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:54:29.391Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T21:54:29.530Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T21:54:30.064Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:JkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q","callLegId":"6bb631f6-6c29-11f1-ae21-02420aef3f20","callSessionId":"6bb62cba-6c29-11f1-b015-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T21:54:30.069Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:54:30.073Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T21:54:30.074Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:54:38.960Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:JkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q","callLegId":"6bb631f6-6c29-11f1-ae21-02420aef3f20","callSessionId":"6bb62cba-6c29-11f1-b015-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T21:54:38.965Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:54:38.969Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T21:54:38.969Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T21:54:39.089Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:JkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q","callLegId":"6bb631f6-6c29-11f1-ae21-02420aef3f20","callSessionId":"6bb62cba-6c29-11f1-b015-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T21:54:39.094Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T21:54:39.098Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6bb62cba-6c29-11f1-b015-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T21:54:39.108Z ERROR [Telnyx API error] {"path":"/calls/v3%3AJkmWYQKXn3CosIYPink9Gk-pfrjH04rbSk9vh3TuSK6NhTpB4tuS3Q/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-19T21:54:39.109Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-19T21:55:09.617Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:55:09.620Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35babd77015dcde1a86e5c"}
2026-06-19T21:55:09.627Z LOG [Inbound SMS linked to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T21:55:09.631Z LOG [Incoming SMS saved to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","messageId":"0d515df5-3228-4d32-bb20-39fc8125ef46","messageProviderSid":"textbee:6a35babd77015dcde1a86e5c","mode":"webhook_fast_save"}
2026-06-19T21:55:09.711Z LOG [SMS cost guard disabled for testing] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:55:09.718Z LOG [Business-related inbound revived AI intake] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T21:55:11.579Z LOG [Customer SMS reply attempt] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T21:55:11.579Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T21:55:11.868Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35bac077015dcde1a86ebc","recipientCount":1}}}
2026-06-19T21:55:11.869Z LOG [Customer SMS reply sent] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35bac077015dcde1a86ebc\",\"recipientCount\":1}}"}
2026-06-19T21:55:11.878Z LOG [Owner alert check] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T21:55:11.879Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T21:55:11.880Z LOG [SMS webhook async AI continuation completed] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","providerMessageSid":"textbee:6a35babd77015dcde1a86e5c"}
2026-06-19T21:55:27.584Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:55:27.585Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms 33536 Unicorn Ct Westland","providerMessageSid":"textbee:6a35bacf77015dcde1a87209"}
2026-06-19T21:55:27.590Z LOG [Inbound SMS linked to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:55:27.596Z LOG [Incoming SMS saved to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","messageId":"ecbc18bd-f1b2-4655-ac94-c46cdc05e0b6","messageProviderSid":"textbee:6a35bacf77015dcde1a87209","mode":"webhook_fast_save"}
2026-06-19T21:55:27.604Z LOG [SMS cost guard disabled for testing] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:55:28.984Z LOG [Customer SMS reply attempt] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":112}
2026-06-19T21:55:28.984Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":112}
2026-06-19T21:55:29.298Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35bad177015dcde1a87247","recipientCount":1}}}
2026-06-19T21:55:29.298Z LOG [Customer SMS reply sent] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35bad177015dcde1a87247\",\"recipientCount\":1}}"}
2026-06-19T21:55:29.302Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — I have your details and will send this to the office so they can follow up shortly."}
2026-06-19T21:55:29.304Z LOG [Owner alert check] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-19T21:55:29.305Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T21:55:29.305Z LOG [SMS webhook async AI continuation completed] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","providerMessageSid":"textbee:6a35bacf77015dcde1a87209"}
2026-06-19T21:56:15.399Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:56:15.399Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Thanks look forward to a call soon","providerMessageSid":"textbee:6a35baff77015dcde1a877ae"}
2026-06-19T21:56:15.404Z LOG [Inbound SMS linked to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T21:56:15.408Z LOG [Incoming SMS saved to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","messageId":"4c6bb082-c5fa-4e74-b7d4-502232afb1f6","messageProviderSid":"textbee:6a35baff77015dcde1a877ae","mode":"webhook_fast_save"}
2026-06-19T21:56:15.414Z LOG [SMS cost guard disabled for testing] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:56:15.418Z LOG [Unrelated inbound saved without customer reply] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","businessType":"pest","bodyPreview":"Thanks look forward to a call soon"}
2026-06-19T21:56:15.418Z LOG [SMS webhook async AI continuation completed] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","providerMessageSid":"textbee:6a35baff77015dcde1a877ae"}
2026-06-19T21:56:39.743Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:56:39.744Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Are you still there?","providerMessageSid":"textbee:6a35bb1777015dcde1a87c50"}
2026-06-19T21:56:39.751Z LOG [Inbound SMS linked to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"needs_review","mode":"webhook_fast_save"}
2026-06-19T21:56:39.756Z LOG [Incoming SMS saved to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","messageId":"b7db5727-0670-4b27-b9fa-1f17fadcdacd","messageProviderSid":"textbee:6a35bb1777015dcde1a87c50","mode":"webhook_fast_save"}
2026-06-19T21:56:39.761Z LOG [SMS cost guard disabled for testing] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:56:39.765Z LOG [Unrelated inbound saved without customer reply] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","businessType":"pest","bodyPreview":"Are you still there?"}
2026-06-19T21:56:39.824Z LOG [SMS webhook async AI continuation completed] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","providerMessageSid":"textbee:6a35bb1777015dcde1a87c50"}
2026-06-19T21:57:00.250Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T21:57:00.251Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"hello?","providerMessageSid":"textbee:6a35bb2c77015dcde1a87e7c"}
2026-06-19T21:57:00.254Z LOG [Inbound SMS linked to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"needs_review","mode":"webhook_fast_save"}
2026-06-19T21:57:00.262Z LOG [Incoming SMS saved to lead] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","messageId":"a0cff601-e08d-4756-a9e2-b72513b77a9f","messageProviderSid":"textbee:6a35bb2c77015dcde1a87e7c","mode":"webhook_fast_save"}
2026-06-19T21:57:00.268Z LOG [SMS cost guard disabled for testing] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T21:57:00.272Z LOG [Unrelated inbound saved without customer reply] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","businessType":"pest","bodyPreview":"hello?"}
2026-06-19T21:57:00.273Z LOG [SMS webhook async AI continuation completed] {"leadId":"6d758a3c-88c3-49e1-9360-c2193fe45d1e","phone":"+14783092224","providerMessageSid":"textbee:6a35bb2c77015dcde1a87e7c"}
2026-06-19T22:43:11.883Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T22:43:11.973Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T22:43:11.975Z LOG Recover Missed Call running on port 3000
2026-06-19T22:43:11.976Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T22:43:11.976Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T22:43:33.193Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:4NWRrKkuFO-_XzqEA5B8JlIHvFccErlq1oq04oADSJ5y7iXViACYAg","callLegId":"4cee0cf6-6c30-11f1-bb6f-02420aef3e20","callSessionId":"4cee088c-6c30-11f1-b3e3-02420aef3e20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T22:43:33.235Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T22:43:33.236Z LOG [Missed-call recovery triggered] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T22:43:33.244Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T22:43:43.249Z LOG [Missed-call recovery SMS attempt] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T22:43:43.252Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T22:43:43.531Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35c61f77015dcde1ab8135","recipientCount":1}}}
2026-06-19T22:43:43.536Z LOG [Missed-call recovery SMS sent] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35c61f77015dcde1ab8135\",\"recipientCount\":1}}"}
2026-06-19T22:43:43.547Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T22:43:43.549Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T22:43:43.935Z LOG [Telnyx voice command ok: answer]
2026-06-19T22:43:44.177Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:4NWRrKkuFO-_XzqEA5B8JlIHvFccErlq1oq04oADSJ5y7iXViACYAg","callLegId":"4cee0cf6-6c30-11f1-bb6f-02420aef3e20","callSessionId":"4cee088c-6c30-11f1-b3e3-02420aef3e20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T22:43:44.181Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:43:44.184Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T22:43:44.354Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T22:43:44.892Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:4NWRrKkuFO-_XzqEA5B8JlIHvFccErlq1oq04oADSJ5y7iXViACYAg","callLegId":"4cee0cf6-6c30-11f1-bb6f-02420aef3e20","callSessionId":"4cee088c-6c30-11f1-b3e3-02420aef3e20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T22:43:44.896Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:43:44.900Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T22:43:44.900Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T22:43:55.395Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:4NWRrKkuFO-_XzqEA5B8JlIHvFccErlq1oq04oADSJ5y7iXViACYAg","callLegId":"4cee0cf6-6c30-11f1-bb6f-02420aef3e20","callSessionId":"4cee088c-6c30-11f1-b3e3-02420aef3e20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T22:43:55.400Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:43:55.404Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T22:43:55.404Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T22:43:55.626Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T22:43:55.779Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:4NWRrKkuFO-_XzqEA5B8JlIHvFccErlq1oq04oADSJ5y7iXViACYAg","callLegId":"4cee0cf6-6c30-11f1-bb6f-02420aef3e20","callSessionId":"4cee088c-6c30-11f1-b3e3-02420aef3e20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T22:43:55.783Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:43:55.787Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cee088c-6c30-11f1-b3e3-02420aef3e20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T22:44:08.484Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T22:44:08.486Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35c63877015dcde1ab858b"}
2026-06-19T22:44:08.492Z LOG [Inbound SMS linked to lead] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T22:44:08.496Z LOG [Incoming SMS saved to lead] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","messageId":"229d1cf3-aec2-43ae-841e-5a88b647e874","messageProviderSid":"textbee:6a35c63877015dcde1ab858b","mode":"webhook_fast_save"}
2026-06-19T22:44:08.571Z LOG [SMS cost guard disabled for testing] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T22:44:08.577Z LOG [Business-related inbound revived AI intake] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T22:44:10.817Z LOG [Customer SMS reply attempt] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":76}
2026-06-19T22:44:10.817Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":76}
2026-06-19T22:44:11.068Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35c63b77015dcde1ab8631","recipientCount":1}}}
2026-06-19T22:44:11.069Z LOG [Customer SMS reply sent] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35c63b77015dcde1ab8631\",\"recipientCount\":1}}"}
2026-06-19T22:44:11.077Z LOG [Owner alert check] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T22:44:11.078Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T22:44:11.080Z LOG [SMS webhook async AI continuation completed] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","providerMessageSid":"textbee:6a35c63877015dcde1ab858b"}
2026-06-19T22:44:35.315Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T22:44:35.316Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charles Simms, 33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35c65377015dcde1ab890d"}
2026-06-19T22:44:35.321Z LOG [Inbound SMS linked to lead] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T22:44:35.327Z LOG [Incoming SMS saved to lead] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","messageId":"45f71990-23dc-4ffd-825c-2f2d6300457d","messageProviderSid":"textbee:6a35c65377015dcde1ab890d","mode":"webhook_fast_save"}
2026-06-19T22:44:35.334Z LOG [SMS cost guard disabled for testing] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T22:44:37.219Z LOG [Customer SMS reply attempt] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":96}
2026-06-19T22:44:37.220Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":96}
2026-06-19T22:44:37.457Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35c65577015dcde1ab8942","recipientCount":1}}}
2026-06-19T22:44:37.457Z LOG [Customer SMS reply sent] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35c65577015dcde1ab8942\",\"recipientCount\":1}}"}
2026-06-19T22:44:37.463Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We handle pest control requests. What pest issue are you dealing with today?"}
2026-06-19T22:44:37.465Z LOG [Owner alert check] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T22:44:37.466Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-19T22:44:37.466Z LOG [SMS webhook async AI continuation completed] {"leadId":"a5b0562e-f43e-4bdb-affb-31e27a93c992","phone":"+14783092224","providerMessageSid":"textbee:6a35c65377015dcde1ab890d"}
2026-06-19T22:50:30.285Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T22:50:30.369Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T22:50:30.371Z LOG Recover Missed Call running on port 3000
2026-06-19T22:50:30.371Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T22:50:30.372Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T22:50:53.565Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T22:50:53.567Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35c7cd77015dcde1abd958"}
2026-06-19T22:50:53.582Z LOG [Inbound SMS linked to lead] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T22:50:53.586Z LOG [Incoming SMS saved to lead] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","messageId":"596f5e86-38e7-45ff-969f-f514a57fccea","messageProviderSid":"textbee:6a35c7cd77015dcde1abd958","mode":"webhook_fast_save"}
2026-06-19T22:50:53.601Z LOG [SMS cost guard disabled for testing] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T22:50:53.607Z LOG [Business-related inbound revived AI intake] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T22:50:55.415Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T22:54:10.816Z","bodyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T22:50:55.421Z LOG [Owner alert check] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T22:50:55.422Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T22:50:55.423Z LOG [SMS webhook async AI continuation completed] {"leadId":"3b6e36ad-17bb-4280-b38b-ffbf69a2c41c","phone":"+14783092224","providerMessageSid":"textbee:6a35c7cd77015dcde1abd958"}
2026-06-19T22:51:51.662Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Gp-pFBr7ERwjTGL3AHx_AzwY-LO5ybk2JfKIScLyFYknW8z7qZGD8Q","callLegId":"76218f7a-6c31-11f1-a12b-9ec75de98f39","callSessionId":"76218890-6c31-11f1-a12e-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T22:51:51.700Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T22:51:51.700Z LOG [Missed-call recovery triggered] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T22:51:51.709Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T22:52:01.727Z LOG [Missed-call recovery SMS attempt] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T22:52:01.732Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T22:52:02.062Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35c81277015dcde1abdf87","recipientCount":1}}}
2026-06-19T22:52:02.072Z LOG [Missed-call recovery SMS sent] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35c81277015dcde1abdf87\",\"recipientCount\":1}}"}
2026-06-19T22:52:02.081Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T22:52:02.082Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"after_hours_call","priorSource":"inbound_call_text","callStatus":"instant_text_only"}
2026-06-19T22:52:02.282Z LOG [Telnyx voice command ok: answer]
2026-06-19T22:52:02.426Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Gp-pFBr7ERwjTGL3AHx_AzwY-LO5ybk2JfKIScLyFYknW8z7qZGD8Q","callLegId":"76218f7a-6c31-11f1-a12b-9ec75de98f39","callSessionId":"76218890-6c31-11f1-a12e-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T22:52:02.429Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:52:02.430Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T22:52:02.509Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T22:52:02.806Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Gp-pFBr7ERwjTGL3AHx_AzwY-LO5ybk2JfKIScLyFYknW8z7qZGD8Q","callLegId":"76218f7a-6c31-11f1-a12b-9ec75de98f39","callSessionId":"76218890-6c31-11f1-a12e-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T22:52:02.812Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:52:02.812Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T22:52:02.812Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T22:52:13.347Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Gp-pFBr7ERwjTGL3AHx_AzwY-LO5ybk2JfKIScLyFYknW8z7qZGD8Q","callLegId":"76218f7a-6c31-11f1-a12b-9ec75de98f39","callSessionId":"76218890-6c31-11f1-a12e-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T22:52:13.353Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:52:13.353Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T22:52:13.353Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T22:52:13.492Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T22:52:13.574Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Gp-pFBr7ERwjTGL3AHx_AzwY-LO5ybk2JfKIScLyFYknW8z7qZGD8Q","callLegId":"76218f7a-6c31-11f1-a12b-9ec75de98f39","callSessionId":"76218890-6c31-11f1-a12e-9ec75de98f39","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T22:52:13.579Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T22:52:13.580Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"76218890-6c31-11f1-a12e-9ec75de98f39:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T22:52:41.456Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T22:52:41.456Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35c83977015dcde1abe741"}
2026-06-19T22:52:41.461Z LOG [Inbound SMS linked to lead] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T22:52:41.466Z LOG [Incoming SMS saved to lead] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","messageId":"78f082ce-b2b3-4db5-9133-64cb63bfad75","messageProviderSid":"textbee:6a35c83977015dcde1abe741","mode":"webhook_fast_save"}
2026-06-19T22:52:41.472Z LOG [SMS cost guard disabled for testing] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T22:52:41.475Z LOG [Business-related inbound revived AI intake] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T22:52:42.980Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T22:54:10.816Z","bodyPreview":"Metro Pest Control: Thanks — what is your name and the full service address?"}
2026-06-19T22:52:42.983Z LOG [Owner alert check] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T22:52:42.983Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T22:52:42.984Z LOG [SMS webhook async AI continuation completed] {"leadId":"6eab8897-304e-484c-b304-86aa0a8cbad9","phone":"+14783092224","providerMessageSid":"textbee:6a35c83977015dcde1abe741"}
2026-06-19T22:53:19.658Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:rPFuEHF7JOAG8g3hhrYD8Bb72Ik8JarpLPG_Uv1bCczoI6Qdp40qiw","callLegId":"aaa5449e-6c31-11f1-bc98-02420aefb020","callSessionId":"aaa53a94-6c31-11f1-ac5a-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T22:53:19.666Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+14783092224","to":"+17342647770"}
2026-06-19T22:53:55.091Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:rPFuEHF7JOAG8g3hhrYD8Bb72Ik8JarpLPG_Uv1bCczoI6Qdp40qiw","callLegId":"aaa5449e-6c31-11f1-bc98-02420aefb020","callSessionId":"aaa53a94-6c31-11f1-ac5a-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T22:53:55.091Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-19T23:06:54.979Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T23:06:55.068Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T23:06:55.071Z LOG Recover Missed Call running on port 3000
2026-06-19T23:06:55.071Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T23:06:55.071Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T23:07:25.190Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:JqmvMjvtwCARuPcAJSEIimHMYvGapMhNz671gvPJsD4TECwSQb-2lQ","callLegId":"a2a4b0c0-6c33-11f1-9b06-02420aef8ba1","callSessionId":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T23:07:25.225Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T23:07:25.386Z LOG [Telnyx voice command ok: answer]
2026-06-19T23:07:25.386Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:07:25.387Z LOG [Missed-call recovery triggered] {"key":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:07:25.396Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T23:07:25.459Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:JqmvMjvtwCARuPcAJSEIimHMYvGapMhNz671gvPJsD4TECwSQb-2lQ","callLegId":"a2a4b0c0-6c33-11f1-9b06-02420aef8ba1","callSessionId":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T23:07:25.464Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:07:25.464Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:07:25.464Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:07:25.526Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T23:07:25.735Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:JqmvMjvtwCARuPcAJSEIimHMYvGapMhNz671gvPJsD4TECwSQb-2lQ","callLegId":"a2a4b0c0-6c33-11f1-9b06-02420aef8ba1","callSessionId":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T23:07:25.740Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:07:25.740Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:07:25.741Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:07:25.742Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:07:35.402Z LOG [Missed-call recovery SMS attempt] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T23:07:35.403Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T23:07:35.676Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cbb777015dcde1ad6d78","recipientCount":1}}}
2026-06-19T23:07:35.679Z LOG [Missed-call recovery SMS sent] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35cbb777015dcde1ad6d78\",\"recipientCount\":1}}"}
2026-06-19T23:07:35.689Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T23:07:36.278Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:JqmvMjvtwCARuPcAJSEIimHMYvGapMhNz671gvPJsD4TECwSQb-2lQ","callLegId":"a2a4b0c0-6c33-11f1-9b06-02420aef8ba1","callSessionId":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T23:07:36.283Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:07:36.283Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:07:36.283Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:07:36.284Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:07:36.402Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T23:07:36.529Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:JqmvMjvtwCARuPcAJSEIimHMYvGapMhNz671gvPJsD4TECwSQb-2lQ","callLegId":"a2a4b0c0-6c33-11f1-9b06-02420aef8ba1","callSessionId":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T23:07:36.535Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:07:36.536Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:07:36.536Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a2a4a71a-6c33-11f1-be7d-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:07:58.309Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:07:58.311Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need help with bees","providerMessageSid":"textbee:6a35cbce77015dcde1ad791b"}
2026-06-19T23:07:58.316Z LOG [Inbound SMS linked to lead] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T23:07:58.325Z LOG [Incoming SMS saved to lead] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","messageId":"92adaa2b-cfab-4a9e-b1da-5c9bc9514637","messageProviderSid":"textbee:6a35cbce77015dcde1ad791b","mode":"webhook_fast_save"}
2026-06-19T23:07:58.395Z LOG [SMS cost guard disabled for testing] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:07:58.402Z LOG [Business-related inbound revived AI intake] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","status":"intake","bodyPreview":"need help with bees"}
2026-06-19T23:08:00.510Z LOG [Customer SMS reply attempt] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-19T23:08:00.510Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-19T23:08:01.632Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cbd177015dcde1ad79d2","recipientCount":1}}}
2026-06-19T23:08:01.633Z LOG [Customer SMS reply sent] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35cbd177015dcde1ad79d2\",\"recipientCount\":1}}"}
2026-06-19T23:08:01.648Z LOG [Owner alert check] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:08:01.648Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:08:01.650Z LOG [SMS webhook async AI continuation completed] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","providerMessageSid":"textbee:6a35cbce77015dcde1ad791b"}
2026-06-19T23:08:20.704Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:08:20.705Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct Westland, MI 48186","providerMessageSid":"textbee:6a35cbe477015dcde1ad825b"}
2026-06-19T23:08:20.711Z LOG [Inbound SMS linked to lead] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T23:08:20.714Z LOG [Incoming SMS saved to lead] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","messageId":"1671b798-bf83-4310-bee9-83c0b4d245a6","messageProviderSid":"textbee:6a35cbe477015dcde1ad825b","mode":"webhook_fast_save"}
2026-06-19T23:08:20.722Z LOG [SMS cost guard disabled for testing] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:08:22.065Z LOG [Customer SMS reply attempt] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T23:08:22.065Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T23:08:22.248Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cbe677015dcde1ad82ab","recipientCount":1}}}
2026-06-19T23:08:22.248Z LOG [Customer SMS reply sent] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35cbe677015dcde1ad82ab\",\"recipientCount\":1}}"}
2026-06-19T23:08:22.252Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T23:08:22.256Z LOG [Owner alert check] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-19T23:08:22.257Z LOG [Owner alert sending] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-19T23:08:22.259Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Need Help With Bees\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 33","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T23:08:22.260Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-19T23:08:22.599Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cbe677015dcde1ad82f4","recipientCount":1}}}
2026-06-19T23:08:22.605Z LOG [Owner SMS TextBee result] accepted
2026-06-19T23:08:22.605Z LOG [Owner alert sms result] sent/accepted
2026-06-19T23:08:22.767Z LOG [Owner alert email result] sent/accepted
2026-06-19T23:08:22.772Z LOG [Owner alert completed] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-19T23:08:22.772Z LOG [SMS webhook async AI continuation completed] {"leadId":"15e6a634-32a2-4621-80d0-4f12f3729aae","phone":"+14783092224","providerMessageSid":"textbee:6a35cbe477015dcde1ad825b"}
2026-06-19T23:20:23.972Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T23:20:23.985Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T23:20:23.986Z LOG Recover Missed Call running on port 3000
2026-06-19T23:20:23.987Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T23:20:23.987Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T23:20:29.042Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:9nRowSR1AfyHDrkX5jDFjFUd9zMtrUgnOdc4HD3wj-cAPPjeoGxSaQ","callLegId":"75ad15b0-6c35-11f1-b879-02420aef3920","callSessionId":"75ad1074-6c35-11f1-a11b-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T23:20:29.093Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T23:20:29.593Z LOG [Telnyx voice command ok: answer]
2026-06-19T23:20:29.594Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:20:29.595Z LOG [Missed-call recovery triggered] {"key":"75ad1074-6c35-11f1-a11b-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:20:29.607Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T23:20:29.687Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:9nRowSR1AfyHDrkX5jDFjFUd9zMtrUgnOdc4HD3wj-cAPPjeoGxSaQ","callLegId":"75ad15b0-6c35-11f1-b879-02420aef3920","callSessionId":"75ad1074-6c35-11f1-a11b-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T23:20:29.693Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:20:29.694Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:20:29.695Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"75ad1074-6c35-11f1-a11b-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:20:29.853Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T23:20:30.760Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:9nRowSR1AfyHDrkX5jDFjFUd9zMtrUgnOdc4HD3wj-cAPPjeoGxSaQ","callLegId":"75ad15b0-6c35-11f1-b879-02420aef3920","callSessionId":"75ad1074-6c35-11f1-a11b-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T23:20:30.766Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:20:30.766Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:20:30.767Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"75ad1074-6c35-11f1-a11b-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:20:30.767Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:20:39.613Z LOG [Missed-call recovery SMS attempt] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T23:20:39.614Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T23:20:39.861Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cec877015dcde1ae034e","recipientCount":1}}}
2026-06-19T23:20:39.865Z LOG [Missed-call recovery SMS sent] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35cec877015dcde1ae034e\",\"recipientCount\":1}}"}
2026-06-19T23:20:39.875Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T23:20:41.292Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:9nRowSR1AfyHDrkX5jDFjFUd9zMtrUgnOdc4HD3wj-cAPPjeoGxSaQ","callLegId":"75ad15b0-6c35-11f1-b879-02420aef3920","callSessionId":"75ad1074-6c35-11f1-a11b-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T23:20:41.296Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:20:41.296Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:20:41.296Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"75ad1074-6c35-11f1-a11b-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:20:41.297Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:20:41.550Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T23:20:41.711Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:9nRowSR1AfyHDrkX5jDFjFUd9zMtrUgnOdc4HD3wj-cAPPjeoGxSaQ","callLegId":"75ad15b0-6c35-11f1-b879-02420aef3920","callSessionId":"75ad1074-6c35-11f1-a11b-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T23:20:41.715Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:20:41.715Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:20:41.716Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"75ad1074-6c35-11f1-a11b-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:21:18.358Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:21:18.361Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"bee help","providerMessageSid":"textbee:6a35ceee77015dcde1ae06d6"}
2026-06-19T23:21:18.370Z LOG [Inbound SMS linked to lead] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T23:21:18.375Z LOG [Incoming SMS saved to lead] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","messageId":"2c8d6030-5812-4393-a677-bf7b0ca59032","messageProviderSid":"textbee:6a35ceee77015dcde1ae06d6","mode":"webhook_fast_save"}
2026-06-19T23:21:18.388Z LOG [SMS cost guard disabled for testing] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:21:18.394Z LOG [Business-related inbound revived AI intake] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","status":"intake","bodyPreview":"bee help"}
2026-06-19T23:21:20.694Z LOG [Customer SMS reply attempt] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-19T23:21:20.694Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-19T23:21:20.954Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35cef177015dcde1ae0781","recipientCount":1}}}
2026-06-19T23:21:20.955Z LOG [Customer SMS reply sent] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35cef177015dcde1ae0781\",\"recipientCount\":1}}"}
2026-06-19T23:21:20.968Z LOG [Owner alert check] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:21:20.968Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:21:20.970Z LOG [SMS webhook async AI continuation completed] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","providerMessageSid":"textbee:6a35ceee77015dcde1ae06d6"}
2026-06-19T23:21:41.110Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:21:41.110Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35cf0577015dcde1ae09af"}
2026-06-19T23:21:41.114Z LOG [Inbound SMS linked to lead] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T23:21:41.121Z LOG [Incoming SMS saved to lead] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","messageId":"5348d5a9-9870-43a4-9db2-b7fc250c1972","messageProviderSid":"textbee:6a35cf0577015dcde1ae09af","mode":"webhook_fast_save"}
2026-06-19T23:21:41.126Z LOG [SMS cost guard disabled for testing] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:21:42.711Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T23:31:20.692Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-19T23:21:42.713Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-19T23:21:42.715Z LOG [Owner alert check] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:21:42.715Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:21:42.716Z LOG [SMS webhook async AI continuation completed] {"leadId":"0b4fe7d6-7138-418e-b27e-1f4ef9187a69","phone":"+14783092224","providerMessageSid":"textbee:6a35cf0577015dcde1ae09af"}
2026-06-19T23:29:22.375Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:U3KNrLSpnDwekJFMPxnH_CdKviwmmiER7h_dQBGr4lq7NKrMjX60rg","callLegId":"b38207be-6c36-11f1-9f8f-02420aef3d20","callSessionId":"b38202f0-6c36-11f1-ab64-02420aef3d20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T23:29:22.386Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T23:29:22.777Z LOG [Telnyx voice command ok: answer]
2026-06-19T23:29:22.777Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:29:22.777Z LOG [Missed-call recovery triggered] {"key":"b38202f0-6c36-11f1-ab64-02420aef3d20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:29:22.787Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T23:29:23.017Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:U3KNrLSpnDwekJFMPxnH_CdKviwmmiER7h_dQBGr4lq7NKrMjX60rg","callLegId":"b38207be-6c36-11f1-9f8f-02420aef3d20","callSessionId":"b38202f0-6c36-11f1-ab64-02420aef3d20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T23:29:23.022Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:29:23.023Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:29:23.023Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b38202f0-6c36-11f1-ab64-02420aef3d20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:29:23.190Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T23:29:23.639Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:U3KNrLSpnDwekJFMPxnH_CdKviwmmiER7h_dQBGr4lq7NKrMjX60rg","callLegId":"b38207be-6c36-11f1-9f8f-02420aef3d20","callSessionId":"b38202f0-6c36-11f1-ab64-02420aef3d20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T23:29:23.644Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:29:23.645Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:29:23.645Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b38202f0-6c36-11f1-ab64-02420aef3d20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:29:23.645Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:29:32.793Z LOG [Missed-call recovery SMS attempt] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T23:29:32.793Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T23:29:32.998Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d0dd77015dcde1ae4b5e","recipientCount":1}}}
2026-06-19T23:29:33.001Z LOG [Missed-call recovery SMS sent] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35d0dd77015dcde1ae4b5e\",\"recipientCount\":1}}"}
2026-06-19T23:29:33.007Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T23:29:34.274Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:U3KNrLSpnDwekJFMPxnH_CdKviwmmiER7h_dQBGr4lq7NKrMjX60rg","callLegId":"b38207be-6c36-11f1-9f8f-02420aef3d20","callSessionId":"b38202f0-6c36-11f1-ab64-02420aef3d20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T23:29:34.278Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:29:34.279Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:29:34.279Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b38202f0-6c36-11f1-ab64-02420aef3d20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:29:34.279Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:29:34.530Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T23:29:34.720Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:U3KNrLSpnDwekJFMPxnH_CdKviwmmiER7h_dQBGr4lq7NKrMjX60rg","callLegId":"b38207be-6c36-11f1-9f8f-02420aef3d20","callSessionId":"b38202f0-6c36-11f1-ab64-02420aef3d20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T23:29:34.725Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:29:34.726Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:29:34.726Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b38202f0-6c36-11f1-ab64-02420aef3d20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:29:50.095Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:29:50.096Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35d0ee77015dcde1ae4fc0"}
2026-06-19T23:29:50.100Z LOG [Inbound SMS linked to lead] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T23:29:50.102Z LOG [Incoming SMS saved to lead] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","messageId":"ae7c46a6-c99f-4d00-bf98-5c7ba1211b2d","messageProviderSid":"textbee:6a35d0ee77015dcde1ae4fc0","mode":"webhook_fast_save"}
2026-06-19T23:29:50.107Z LOG [SMS cost guard disabled for testing] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:29:50.110Z LOG [Business-related inbound revived AI intake] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T23:29:51.468Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-19T23:31:20.692Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-19T23:29:51.472Z LOG [Owner alert check] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:29:51.472Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:29:51.473Z LOG [SMS webhook async AI continuation completed] {"leadId":"4df0dd16-7e8d-470c-8bde-0ada9c28ec3d","phone":"+14783092224","providerMessageSid":"textbee:6a35d0ee77015dcde1ae4fc0"}
2026-06-19T23:42:04.761Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-19T23:42:04.776Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-19T23:42:04.778Z LOG Recover Missed Call running on port 3000
2026-06-19T23:42:04.778Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-19T23:42:04.779Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-19T23:44:03.477Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Qc-TDcyOAhfjA1o8Wg1_HdEyOy-xXd5nu-LQOkISSOBa9d5SLgZ3wQ","callLegId":"c0ab60f0-6c38-11f1-892e-02420aef26a1","callSessionId":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-19T23:44:03.562Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-19T23:44:04.044Z LOG [Telnyx voice command ok: answer]
2026-06-19T23:44:04.045Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:44:04.045Z LOG [Missed-call recovery triggered] {"key":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-19T23:44:04.057Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-19T23:44:04.433Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Qc-TDcyOAhfjA1o8Wg1_HdEyOy-xXd5nu-LQOkISSOBa9d5SLgZ3wQ","callLegId":"c0ab60f0-6c38-11f1-892e-02420aef26a1","callSessionId":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-19T23:44:04.437Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:44:04.438Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:44:04.438Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-19T23:44:04.574Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-19T23:44:05.735Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Qc-TDcyOAhfjA1o8Wg1_HdEyOy-xXd5nu-LQOkISSOBa9d5SLgZ3wQ","callLegId":"c0ab60f0-6c38-11f1-892e-02420aef26a1","callSessionId":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-19T23:44:05.739Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:44:05.739Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:44:05.739Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-19T23:44:05.740Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:44:14.065Z LOG [Missed-call recovery SMS attempt] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-19T23:44:14.069Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-19T23:44:14.743Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d44f77015dcde1affb04","recipientCount":1}}}
2026-06-19T23:44:14.747Z LOG [Missed-call recovery SMS sent] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35d44f77015dcde1affb04\",\"recipientCount\":1}}"}
2026-06-19T23:44:14.758Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-19T23:44:16.201Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Qc-TDcyOAhfjA1o8Wg1_HdEyOy-xXd5nu-LQOkISSOBa9d5SLgZ3wQ","callLegId":"c0ab60f0-6c38-11f1-892e-02420aef26a1","callSessionId":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-19T23:44:16.204Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:44:16.208Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:44:16.208Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-19T23:44:16.208Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-19T23:44:16.494Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-19T23:44:16.775Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Qc-TDcyOAhfjA1o8Wg1_HdEyOy-xXd5nu-LQOkISSOBa9d5SLgZ3wQ","callLegId":"c0ab60f0-6c38-11f1-892e-02420aef26a1","callSessionId":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-19T23:44:16.779Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-19T23:44:16.782Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:44:16.782Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c0ab57ea-6c38-11f1-a2d1-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-19T23:44:45.400Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:44:45.402Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need bee help","providerMessageSid":"textbee:6a35d46d77015dcde1b005ce"}
2026-06-19T23:44:45.409Z LOG [Inbound SMS linked to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-19T23:44:45.417Z LOG [Incoming SMS saved to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","messageId":"1eaf9627-f2e6-4570-99ea-770d1d088264","messageProviderSid":"textbee:6a35d46d77015dcde1b005ce","mode":"webhook_fast_save"}
2026-06-19T23:44:45.427Z LOG [SMS cost guard disabled for testing] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:44:45.432Z LOG [Business-related inbound revived AI intake] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"intake","bodyPreview":"need bee help"}
2026-06-19T23:44:47.956Z LOG [Customer SMS reply attempt] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-19T23:44:47.957Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-19T23:44:48.426Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d47077015dcde1b00718","recipientCount":1}}}
2026-06-19T23:44:48.426Z LOG [Customer SMS reply sent] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35d47077015dcde1b00718\",\"recipientCount\":1}}"}
2026-06-19T23:44:48.434Z LOG [Owner alert check] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:44:48.435Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:44:48.436Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","providerMessageSid":"textbee:6a35d46d77015dcde1b005ce"}
2026-06-19T23:45:00.277Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:45:00.277Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35d47c77015dcde1b009eb"}
2026-06-19T23:45:00.281Z LOG [Inbound SMS linked to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T23:45:00.289Z LOG [Incoming SMS saved to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","messageId":"ec75cd02-72f1-463c-ab72-f34d69f6ae47","messageProviderSid":"textbee:6a35d47c77015dcde1b009eb","mode":"webhook_fast_save"}
2026-06-19T23:45:00.295Z LOG [SMS cost guard disabled for testing] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:45:01.725Z LOG [Customer SMS reply attempt] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-19T23:45:01.725Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-19T23:45:02.048Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d47e77015dcde1b00c09","recipientCount":1}}}
2026-06-19T23:45:02.048Z LOG [Customer SMS reply sent] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35d47e77015dcde1b00c09\",\"recipientCount\":1}}"}
2026-06-19T23:45:02.055Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-19T23:45:02.083Z LOG [Owner alert check] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-19T23:45:02.083Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-19T23:45:02.084Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","providerMessageSid":"textbee:6a35d47c77015dcde1b009eb"}
2026-06-19T23:45:16.817Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-19T23:45:16.818Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct Westland MI 48186","providerMessageSid":"textbee:6a35d48d77015dcde1b00e2f"}
2026-06-19T23:45:16.822Z LOG [Inbound SMS linked to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-19T23:45:16.828Z LOG [Incoming SMS saved to lead] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","messageId":"5b877164-c63c-4a6c-97c9-de93dcf4e2ad","messageProviderSid":"textbee:6a35d48d77015dcde1b00e2f","mode":"webhook_fast_save"}
2026-06-19T23:45:16.833Z LOG [SMS cost guard disabled for testing] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-19T23:45:18.378Z LOG [Customer SMS reply attempt] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-19T23:45:18.379Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-19T23:45:19.003Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d48f77015dcde1b00ee9","recipientCount":1}}}
2026-06-19T23:45:19.003Z LOG [Customer SMS reply sent] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35d48f77015dcde1b00ee9\",\"recipientCount\":1}}"}
2026-06-19T23:45:19.010Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-19T23:45:19.014Z LOG [Owner alert check] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-19T23:45:19.015Z LOG [Owner alert sending] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-19T23:45:19.018Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 33536 Unicorn Ct","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-19T23:45:19.018Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-19T23:45:19.447Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35d48f77015dcde1b00f23","recipientCount":1}}}
2026-06-19T23:45:19.448Z LOG [Owner SMS TextBee result] accepted
2026-06-19T23:45:19.448Z LOG [Owner alert sms result] sent/accepted
2026-06-19T23:45:19.535Z LOG [Owner alert email result] sent/accepted
2026-06-19T23:45:19.539Z LOG [Owner alert completed] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-19T23:45:19.542Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ea094f-0cf0-4bc2-a04b-71a4968df75d","phone":"+14783092224","providerMessageSid":"textbee:6a35d48d77015dcde1b00e2f"}
2026-06-20T00:16:33.883Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T00:16:33.968Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T00:16:33.970Z LOG Recover Missed Call running on port 3000
2026-06-20T00:16:33.971Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T00:16:33.971Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T00:16:36.440Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:JeChYDuDQoy8_2Re9ZqHw9nLbN1I7g8NTrUsPguz4T-BKeehnZI8sg","callLegId":"4cbc5208-6c3d-11f1-a673-02420aef2720","callSessionId":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T00:16:36.495Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T00:16:37.152Z LOG [Telnyx voice command ok: answer]
2026-06-20T00:16:37.152Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:16:37.153Z LOG [Missed-call recovery triggered] {"key":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:16:37.165Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T00:16:37.535Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:JeChYDuDQoy8_2Re9ZqHw9nLbN1I7g8NTrUsPguz4T-BKeehnZI8sg","callLegId":"4cbc5208-6c3d-11f1-a673-02420aef2720","callSessionId":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T00:16:37.539Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:16:37.539Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:16:37.540Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:16:37.676Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T00:16:38.537Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:JeChYDuDQoy8_2Re9ZqHw9nLbN1I7g8NTrUsPguz4T-BKeehnZI8sg","callLegId":"4cbc5208-6c3d-11f1-a673-02420aef2720","callSessionId":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T00:16:38.542Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:16:38.543Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:16:38.543Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:16:38.543Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:16:47.173Z LOG [Missed-call recovery SMS attempt] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T00:16:47.174Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-20T00:16:47.468Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dbef77015dcde1b22233","recipientCount":1}}}
2026-06-20T00:16:47.471Z LOG [Missed-call recovery SMS sent] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dbef77015dcde1b22233\",\"recipientCount\":1}}"}
2026-06-20T00:16:47.479Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T00:16:49.170Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:JeChYDuDQoy8_2Re9ZqHw9nLbN1I7g8NTrUsPguz4T-BKeehnZI8sg","callLegId":"4cbc5208-6c3d-11f1-a673-02420aef2720","callSessionId":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T00:16:49.175Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:16:49.176Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:16:49.176Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:16:49.176Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:16:49.417Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T00:16:49.829Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:JeChYDuDQoy8_2Re9ZqHw9nLbN1I7g8NTrUsPguz4T-BKeehnZI8sg","callLegId":"4cbc5208-6c3d-11f1-a673-02420aef2720","callSessionId":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T00:16:49.834Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:16:49.834Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:16:49.834Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4cbc45c4-6c3d-11f1-a3f2-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:17:55.335Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:17:55.337Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"There is a massive raccoon trapped in my chimney right now and it’s making crazy","providerMessageSid":"textbee:6a35dc3377015dcde1b22bcc"}
2026-06-20T00:17:55.342Z LOG [Inbound SMS linked to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T00:17:55.349Z LOG [Incoming SMS saved to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","messageId":"93907ce0-a18a-42e9-8a9e-d3daa1dca58c","messageProviderSid":"textbee:6a35dc3377015dcde1b22bcc","mode":"webhook_fast_save"}
2026-06-20T00:17:55.360Z LOG [SMS cost guard disabled for testing] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:17:55.368Z LOG [Business-related inbound revived AI intake] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"intake","bodyPreview":"There is a massive raccoon trapped in my chimney right now and it’s making crazy noises."}
2026-06-20T00:17:57.204Z LOG [Customer SMS reply attempt] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-20T00:17:57.204Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-20T00:17:57.603Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dc3577015dcde1b22c58","recipientCount":1}}}
2026-06-20T00:17:57.604Z LOG [Customer SMS reply sent] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dc3577015dcde1b22c58\",\"recipientCount\":1}}"}
2026-06-20T00:17:57.612Z LOG [Owner alert check] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T00:17:57.612Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Wildlife","reason":"not enough qualified details yet"}
2026-06-20T00:17:57.613Z LOG [SMS webhook async AI continuation completed] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","providerMessageSid":"textbee:6a35dc3377015dcde1b22bcc"}
2026-06-20T00:18:09.676Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:18:09.676Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35dc4177015dcde1b22f52"}
2026-06-20T00:18:09.680Z LOG [Inbound SMS linked to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T00:18:09.691Z LOG [Incoming SMS saved to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","messageId":"8ea81013-f47e-406e-a117-5a435667ee66","messageProviderSid":"textbee:6a35dc4177015dcde1b22f52","mode":"webhook_fast_save"}
2026-06-20T00:18:09.696Z LOG [SMS cost guard disabled for testing] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:18:10.967Z LOG [Customer SMS reply attempt] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T00:18:10.968Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T00:18:11.189Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dc4377015dcde1b22f8e","recipientCount":1}}}
2026-06-20T00:18:11.190Z LOG [Customer SMS reply sent] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dc4377015dcde1b22f8e\",\"recipientCount\":1}}"}
2026-06-20T00:18:11.194Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-20T00:18:11.197Z LOG [Owner alert check] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T00:18:11.198Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Wildlife","reason":"not enough qualified details yet"}
2026-06-20T00:18:11.198Z LOG [SMS webhook async AI continuation completed] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","providerMessageSid":"textbee:6a35dc4177015dcde1b22f52"}
2026-06-20T00:18:24.643Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:18:24.643Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35dc5077015dcde1b23203"}
2026-06-20T00:18:24.647Z LOG [Inbound SMS linked to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T00:18:24.650Z LOG [Incoming SMS saved to lead] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","messageId":"9afa7566-078d-4725-8a70-1de36b8144fa","messageProviderSid":"textbee:6a35dc5077015dcde1b23203","mode":"webhook_fast_save"}
2026-06-20T00:18:24.658Z LOG [SMS cost guard disabled for testing] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:18:26.988Z LOG [Customer SMS reply attempt] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-20T00:18:26.988Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-20T00:18:27.214Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dc5377015dcde1b23253","recipientCount":1}}}
2026-06-20T00:18:27.215Z LOG [Customer SMS reply sent] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dc5377015dcde1b23253\",\"recipientCount\":1}}"}
2026-06-20T00:18:27.219Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T00:18:27.222Z LOG [Owner alert check] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T00:18:27.224Z LOG [Owner alert sending] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T00:18:27.226Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Wildlife\nAddress: 33536 Unicorn Ct, Westla","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T00:18:27.226Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":264}
2026-06-20T00:18:27.447Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dc5377015dcde1b23281","recipientCount":1}}}
2026-06-20T00:18:27.447Z LOG [Owner SMS TextBee result] accepted
2026-06-20T00:18:27.447Z LOG [Owner alert sms result] sent/accepted
2026-06-20T00:18:27.669Z LOG [Owner alert email result] sent/accepted
2026-06-20T00:18:27.676Z LOG [Owner alert completed] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T00:18:27.676Z LOG [SMS webhook async AI continuation completed] {"leadId":"6457292b-07c5-4431-9dcc-b8d628f56690","phone":"+14783092224","providerMessageSid":"textbee:6a35dc5077015dcde1b23203"}
2026-06-20T00:20:16.389Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:P-XZWsjkeDAYDqU345CU-sAs7akniMnDH1d8o38tCtAWJo8mRC-mhw","callLegId":"d00a034e-6c3d-11f1-82fb-7a7841d72856","callSessionId":"d009fd18-6c3d-11f1-85bc-7a7841d72856","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T00:20:16.404Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T00:20:16.590Z LOG [Telnyx voice command ok: answer]
2026-06-20T00:20:16.590Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:20:16.590Z LOG [Missed-call recovery triggered] {"key":"d009fd18-6c3d-11f1-85bc-7a7841d72856:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:20:16.600Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T00:20:16.694Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:P-XZWsjkeDAYDqU345CU-sAs7akniMnDH1d8o38tCtAWJo8mRC-mhw","callLegId":"d00a034e-6c3d-11f1-82fb-7a7841d72856","callSessionId":"d009fd18-6c3d-11f1-85bc-7a7841d72856","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T00:20:16.699Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:20:16.699Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:20:16.699Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d009fd18-6c3d-11f1-85bc-7a7841d72856:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:20:16.774Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T00:20:17.190Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:P-XZWsjkeDAYDqU345CU-sAs7akniMnDH1d8o38tCtAWJo8mRC-mhw","callLegId":"d00a034e-6c3d-11f1-82fb-7a7841d72856","callSessionId":"d009fd18-6c3d-11f1-85bc-7a7841d72856","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T00:20:17.195Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:20:17.196Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:20:17.196Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d009fd18-6c3d-11f1-85bc-7a7841d72856:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:20:17.196Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:20:26.606Z LOG [Missed-call recovery SMS attempt] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T00:20:26.606Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":105}
2026-06-20T00:20:27.086Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dccb77015dcde1b24723","recipientCount":1}}}
2026-06-20T00:20:27.089Z LOG [Missed-call recovery SMS sent] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dccb77015dcde1b24723\",\"recipientCount\":1}}"}
2026-06-20T00:20:27.093Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T00:20:27.903Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:P-XZWsjkeDAYDqU345CU-sAs7akniMnDH1d8o38tCtAWJo8mRC-mhw","callLegId":"d00a034e-6c3d-11f1-82fb-7a7841d72856","callSessionId":"d009fd18-6c3d-11f1-85bc-7a7841d72856","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T00:20:27.907Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:20:27.907Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:20:27.908Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d009fd18-6c3d-11f1-85bc-7a7841d72856:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:20:27.908Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:20:28.057Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T00:20:28.142Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:P-XZWsjkeDAYDqU345CU-sAs7akniMnDH1d8o38tCtAWJo8mRC-mhw","callLegId":"d00a034e-6c3d-11f1-82fb-7a7841d72856","callSessionId":"d009fd18-6c3d-11f1-85bc-7a7841d72856","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T00:20:28.149Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:20:28.149Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:20:28.150Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d009fd18-6c3d-11f1-85bc-7a7841d72856:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:20:50.710Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:20:50.710Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Our AC unit is out, no cold air","providerMessageSid":"textbee:6a35dce277015dcde1b24a7c"}
2026-06-20T00:20:50.715Z LOG [Inbound SMS linked to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T00:20:50.724Z LOG [Incoming SMS saved to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","messageId":"86aae9a5-e25b-47d2-883c-1ebb755b13dc","messageProviderSid":"textbee:6a35dce277015dcde1b24a7c","mode":"webhook_fast_save"}
2026-06-20T00:20:50.732Z LOG [SMS cost guard disabled for testing] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:20:50.738Z LOG [Business-related inbound revived AI intake] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"intake","bodyPreview":"Our AC unit is out, no cold air"}
2026-06-20T00:20:52.033Z LOG [Customer SMS reply attempt] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":75}
2026-06-20T00:20:52.033Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":75}
2026-06-20T00:20:52.215Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dce477015dcde1b24abe","recipientCount":1}}}
2026-06-20T00:20:52.216Z LOG [Customer SMS reply sent] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dce477015dcde1b24abe\",\"recipientCount\":1}}"}
2026-06-20T00:20:52.223Z LOG [Owner alert check] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T00:20:52.223Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"No AC / cooling issue","reason":"not enough qualified details yet"}
2026-06-20T00:20:52.224Z LOG [SMS webhook async AI continuation completed] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","providerMessageSid":"textbee:6a35dce277015dcde1b24a7c"}
2026-06-20T00:21:07.345Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:21:07.345Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35dcf377015dcde1b24dd5"}
2026-06-20T00:21:07.350Z LOG [Inbound SMS linked to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T00:21:07.352Z LOG [Incoming SMS saved to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","messageId":"084c0c0f-31ab-4e9d-a9e3-45407230a1e6","messageProviderSid":"textbee:6a35dcf377015dcde1b24dd5","mode":"webhook_fast_save"}
2026-06-20T00:21:07.358Z LOG [SMS cost guard disabled for testing] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:21:08.527Z LOG [Customer SMS reply attempt] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":69}
2026-06-20T00:21:08.527Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":69}
2026-06-20T00:21:08.718Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dcf477015dcde1b24e04","recipientCount":1}}}
2026-06-20T00:21:08.718Z LOG [Customer SMS reply sent] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dcf477015dcde1b24e04\",\"recipientCount\":1}}"}
2026-06-20T00:21:08.722Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Heating and Cooling: Thanks — what is the full service address?"}
2026-06-20T00:21:08.724Z LOG [Owner alert check] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T00:21:08.724Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"No AC / cooling issue","reason":"not enough qualified details yet"}
2026-06-20T00:21:08.725Z LOG [SMS webhook async AI continuation completed] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","providerMessageSid":"textbee:6a35dcf377015dcde1b24dd5"}
2026-06-20T00:21:25.826Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:21:25.826Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 main st, plymouth, mi","providerMessageSid":"textbee:6a35dd0677015dcde1b25104"}
2026-06-20T00:21:25.829Z LOG [Inbound SMS linked to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T00:21:25.839Z LOG [Incoming SMS saved to lead] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","messageId":"2035ec3f-2db7-454a-8a79-eac6d53c7611","messageProviderSid":"textbee:6a35dd0677015dcde1b25104","mode":"webhook_fast_save"}
2026-06-20T00:21:25.844Z LOG [SMS cost guard disabled for testing] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:21:26.905Z LOG [Customer SMS reply attempt] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":102}
2026-06-20T00:21:26.906Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":102}
2026-06-20T00:21:27.193Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dd0777015dcde1b25166","recipientCount":1}}}
2026-06-20T00:21:27.194Z LOG [Customer SMS reply sent] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dd0777015dcde1b25166\",\"recipientCount\":1}}"}
2026-06-20T00:21:27.197Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Heating and Cooling: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T00:21:27.200Z LOG [Owner alert check] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T00:21:27.200Z LOG [Owner alert sending] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T00:21:27.201Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Heating and Cooling\nName: Chuck\nPhone: +14783092224\nIssue: No AC / cooling issue\nAddress: 123 ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T00:21:27.201Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":243}
2026-06-20T00:21:27.381Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dd0777015dcde1b25194","recipientCount":1}}}
2026-06-20T00:21:27.415Z LOG [Owner SMS TextBee result] accepted
2026-06-20T00:21:27.415Z LOG [Owner alert sms result] sent/accepted
2026-06-20T00:21:27.571Z LOG [Owner alert email result] sent/accepted
2026-06-20T00:21:27.576Z LOG [Owner alert completed] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T00:21:27.576Z LOG [SMS webhook async AI continuation completed] {"leadId":"100145cf-7cee-48fb-9f00-c4072d539298","phone":"+14783092224","providerMessageSid":"textbee:6a35dd0677015dcde1b25104"}
2026-06-20T00:22:47.271Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:8j6ZAzVHfll9PSupkIhA8VOWzUcQtA7-gyEQy07ksw6TVZZMmdnqwg","callLegId":"29c03818-6c3e-11f1-95d2-02420aef98a1","callSessionId":"29c02cec-6c3e-11f1-af3c-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T00:22:47.286Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T00:22:47.797Z LOG [Telnyx voice command ok: answer]
2026-06-20T00:22:47.797Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:22:47.797Z LOG [Missed-call recovery triggered] {"key":"29c02cec-6c3e-11f1-af3c-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T00:22:47.803Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T00:22:48.212Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:8j6ZAzVHfll9PSupkIhA8VOWzUcQtA7-gyEQy07ksw6TVZZMmdnqwg","callLegId":"29c03818-6c3e-11f1-95d2-02420aef98a1","callSessionId":"29c02cec-6c3e-11f1-af3c-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T00:22:48.215Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:22:48.215Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:22:48.215Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"29c02cec-6c3e-11f1-af3c-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T00:22:48.356Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T00:22:49.369Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:8j6ZAzVHfll9PSupkIhA8VOWzUcQtA7-gyEQy07ksw6TVZZMmdnqwg","callLegId":"29c03818-6c3e-11f1-95d2-02420aef98a1","callSessionId":"29c02cec-6c3e-11f1-af3c-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T00:22:49.373Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:22:49.373Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:22:49.373Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"29c02cec-6c3e-11f1-af3c-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T00:22:49.373Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:22:57.810Z LOG [Missed-call recovery SMS attempt] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T00:22:57.810Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T00:22:57.987Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35dd6277015dcde1b25e23","recipientCount":1}}}
2026-06-20T00:22:57.989Z LOG [Missed-call recovery SMS sent] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35dd6277015dcde1b25e23\",\"recipientCount\":1}}"}
2026-06-20T00:22:57.993Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T00:22:59.594Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:8j6ZAzVHfll9PSupkIhA8VOWzUcQtA7-gyEQy07ksw6TVZZMmdnqwg","callLegId":"29c03818-6c3e-11f1-95d2-02420aef98a1","callSessionId":"29c02cec-6c3e-11f1-af3c-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T00:22:59.601Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:22:59.601Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:22:59.601Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"29c02cec-6c3e-11f1-af3c-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T00:22:59.601Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T00:22:59.937Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T00:23:00.279Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:8j6ZAzVHfll9PSupkIhA8VOWzUcQtA7-gyEQy07ksw6TVZZMmdnqwg","callLegId":"29c03818-6c3e-11f1-95d2-02420aef98a1","callSessionId":"29c02cec-6c3e-11f1-af3c-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T00:23:00.283Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T00:23:00.283Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:23:00.283Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"29c02cec-6c3e-11f1-af3c-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T00:23:17.947Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T00:23:17.947Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Our garage disposal stopped working","providerMessageSid":"textbee:6a35dd7677015dcde1b260e4"}
2026-06-20T00:23:17.952Z LOG [Inbound SMS linked to lead] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T00:23:17.954Z LOG [Incoming SMS saved to lead] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","messageId":"41c8aceb-7ef2-4ba0-8acc-b35030b6deb6","messageProviderSid":"textbee:6a35dd7677015dcde1b260e4","mode":"webhook_fast_save"}
2026-06-20T00:23:17.958Z LOG [SMS cost guard disabled for testing] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T00:23:17.965Z LOG [Off-scope unrelated inbound saved with no automated reply] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","businessType":"plumbing","bodyPreview":"Our garage disposal stopped working"}
2026-06-20T00:23:17.965Z LOG [SMS webhook async AI continuation completed] {"leadId":"b496b0b5-acc4-4f40-812b-379683cb7927","phone":"+14783092224","providerMessageSid":"textbee:6a35dd7677015dcde1b260e4"}
2026-06-20T00:24:16.868Z LOG [Fresh missed-call intake created] {"previousLeadId":"b496b0b5-acc4-4f40-812b-379683cb7927","leadId":"2f75560f-fdfe-4626-a1f4-a3045b4e0d72","phone":"+14783092224","source":"manual_resend_initial_sms"}
2026-06-20T00:24:16.881Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"manual_resend_initial_sms","callStatus":"manual_resend","delaySeconds":10}
2026-06-20T00:24:26.887Z LOG [Missed-call recovery SMS attempt] {"leadId":"2f75560f-fdfe-4626-a1f4-a3045b4e0d72","phone":"+14783092224","source":"manual_resend_initial_sms","callStatus":"manual_resend","provider":"textbee"}
2026-06-20T00:24:26.888Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T00:24:27.132Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ddbb77015dcde1b26c17","recipientCount":1}}}
2026-06-20T00:24:27.135Z LOG [Missed-call recovery SMS sent] {"leadId":"2f75560f-fdfe-4626-a1f4-a3045b4e0d72","phone":"+14783092224","source":"manual_resend_initial_sms","callStatus":"manual_resend","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ddbb77015dcde1b26c17\",\"recipientCount\":1}}"}
2026-06-20T00:24:27.140Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"2f75560f-fdfe-4626-a1f4-a3045b4e0d72","phone":"+14783092224","callStatus":"manual_resend","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T00:34:56.065Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T00:34:56.078Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T00:34:56.080Z LOG Recover Missed Call running on port 3000
2026-06-20T00:34:56.080Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T00:34:56.080Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T01:06:10.992Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T01:06:11.077Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T01:06:11.079Z LOG Recover Missed Call running on port 3000
2026-06-20T01:06:11.080Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T01:06:11.080Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T01:06:12.881Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T01:06:12.963Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T01:06:12.965Z LOG Recover Missed Call running on port 3000
2026-06-20T01:06:12.965Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T01:06:12.965Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T01:19:05.260Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T01:19:05.274Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T01:19:05.276Z LOG Recover Missed Call running on port 3000
2026-06-20T01:19:05.276Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T01:19:05.277Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T01:20:23.566Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:r7vNXBFKqyHWl3KN_Tnn3HA5bEs7QrA3wV5w4Ejoc8KyMjZhoxiDvA","callLegId":"36149afc-6c46-11f1-acc8-968e682dbb56","callSessionId":"3614950c-6c46-11f1-be38-968e682dbb56","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T01:20:23.614Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T01:20:23.829Z LOG [Telnyx voice command ok: answer]
2026-06-20T01:20:23.829Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:20:23.830Z LOG [Missed-call recovery triggered] {"key":"3614950c-6c46-11f1-be38-968e682dbb56:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:20:23.848Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T01:20:23.953Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:r7vNXBFKqyHWl3KN_Tnn3HA5bEs7QrA3wV5w4Ejoc8KyMjZhoxiDvA","callLegId":"36149afc-6c46-11f1-acc8-968e682dbb56","callSessionId":"3614950c-6c46-11f1-be38-968e682dbb56","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T01:20:23.963Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:20:23.964Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:20:23.964Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3614950c-6c46-11f1-be38-968e682dbb56:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:20:24.022Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T01:20:24.382Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:r7vNXBFKqyHWl3KN_Tnn3HA5bEs7QrA3wV5w4Ejoc8KyMjZhoxiDvA","callLegId":"36149afc-6c46-11f1-acc8-968e682dbb56","callSessionId":"3614950c-6c46-11f1-be38-968e682dbb56","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T01:20:24.390Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:20:24.390Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:20:24.391Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3614950c-6c46-11f1-be38-968e682dbb56:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:20:24.391Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:20:33.855Z LOG [Missed-call recovery SMS attempt] {"leadId":"7c5672c1-091e-4035-b271-a2e3e2ff8a68","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T01:20:33.856Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T01:20:34.300Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eae277015dcde1b5f78e","recipientCount":1}}}
2026-06-20T01:20:34.306Z LOG [Missed-call recovery SMS sent] {"leadId":"7c5672c1-091e-4035-b271-a2e3e2ff8a68","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35eae277015dcde1b5f78e\",\"recipientCount\":1}}"}
2026-06-20T01:20:34.317Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7c5672c1-091e-4035-b271-a2e3e2ff8a68","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T01:20:34.610Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:r7vNXBFKqyHWl3KN_Tnn3HA5bEs7QrA3wV5w4Ejoc8KyMjZhoxiDvA","callLegId":"36149afc-6c46-11f1-acc8-968e682dbb56","callSessionId":"3614950c-6c46-11f1-be38-968e682dbb56","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T01:20:34.614Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:20:34.614Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:20:34.615Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3614950c-6c46-11f1-be38-968e682dbb56:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:20:34.615Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:20:34.737Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T01:20:34.827Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:r7vNXBFKqyHWl3KN_Tnn3HA5bEs7QrA3wV5w4Ejoc8KyMjZhoxiDvA","callLegId":"36149afc-6c46-11f1-acc8-968e682dbb56","callSessionId":"3614950c-6c46-11f1-be38-968e682dbb56","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T01:20:34.833Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:20:34.833Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:20:34.833Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3614950c-6c46-11f1-be38-968e682dbb56:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:22:44.744Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:B65ENZcWfGDyEuLOe3HzHwPOECMnDfR8bOMgVbXkqGjaROZzJp6aSA","callLegId":"89fa71c8-6c46-11f1-a2b3-02420aef9520","callSessionId":"89fa63c2-6c46-11f1-ae2d-02420aef9520","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T01:22:44.752Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T01:22:45.349Z LOG [Telnyx voice command ok: answer]
2026-06-20T01:22:45.349Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:22:45.349Z LOG [Missed-call recovery triggered] {"key":"89fa63c2-6c46-11f1-ae2d-02420aef9520:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:22:45.356Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T01:22:45.758Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:B65ENZcWfGDyEuLOe3HzHwPOECMnDfR8bOMgVbXkqGjaROZzJp6aSA","callLegId":"89fa71c8-6c46-11f1-a2b3-02420aef9520","callSessionId":"89fa63c2-6c46-11f1-ae2d-02420aef9520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T01:22:45.763Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:22:45.763Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:22:45.763Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"89fa63c2-6c46-11f1-ae2d-02420aef9520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:22:45.883Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T01:22:47.075Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:B65ENZcWfGDyEuLOe3HzHwPOECMnDfR8bOMgVbXkqGjaROZzJp6aSA","callLegId":"89fa71c8-6c46-11f1-a2b3-02420aef9520","callSessionId":"89fa63c2-6c46-11f1-ae2d-02420aef9520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T01:22:47.080Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:22:47.080Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:22:47.081Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"89fa63c2-6c46-11f1-ae2d-02420aef9520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:22:47.081Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:22:55.364Z LOG [Missed-call recovery SMS attempt] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T01:22:55.365Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T01:22:55.611Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eb6f77015dcde1b61170","recipientCount":1}}}
2026-06-20T01:22:55.614Z LOG [Missed-call recovery SMS sent] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35eb6f77015dcde1b61170\",\"recipientCount\":1}}"}
2026-06-20T01:22:55.621Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T01:22:57.232Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:B65ENZcWfGDyEuLOe3HzHwPOECMnDfR8bOMgVbXkqGjaROZzJp6aSA","callLegId":"89fa71c8-6c46-11f1-a2b3-02420aef9520","callSessionId":"89fa63c2-6c46-11f1-ae2d-02420aef9520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T01:22:57.237Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:22:57.238Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:22:57.238Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"89fa63c2-6c46-11f1-ae2d-02420aef9520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:22:57.238Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:22:57.665Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T01:22:57.960Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:B65ENZcWfGDyEuLOe3HzHwPOECMnDfR8bOMgVbXkqGjaROZzJp6aSA","callLegId":"89fa71c8-6c46-11f1-a2b3-02420aef9520","callSessionId":"89fa63c2-6c46-11f1-ae2d-02420aef9520","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T01:22:57.964Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:22:57.965Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:22:57.965Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"89fa63c2-6c46-11f1-ae2d-02420aef9520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:23:08.149Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:23:08.151Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Do you guys sell copper pipes directly to the public? I just want to buy some sc","providerMessageSid":"textbee:6a35eb7c77015dcde1b6148b"}
2026-06-20T01:23:08.157Z LOG [Inbound SMS linked to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T01:23:08.165Z LOG [Incoming SMS saved to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","messageId":"8d861a3c-1008-4fb0-b2ac-a44fde44669b","messageProviderSid":"textbee:6a35eb7c77015dcde1b6148b","mode":"webhook_fast_save"}
2026-06-20T01:23:08.177Z LOG [SMS cost guard disabled for testing] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:23:08.191Z LOG [Business-related inbound revived AI intake] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"intake","bodyPreview":"Do you guys sell copper pipes directly to the public? I just want to buy some scrap"}
2026-06-20T01:23:10.369Z LOG [Customer SMS reply attempt] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":64}
2026-06-20T01:23:10.369Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":64}
2026-06-20T01:23:10.564Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eb7e77015dcde1b614bf","recipientCount":1}}}
2026-06-20T01:23:10.565Z LOG [Customer SMS reply sent] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35eb7e77015dcde1b614bf\",\"recipientCount\":1}}"}
2026-06-20T01:23:10.574Z LOG [Owner alert check] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T01:23:10.575Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Plumbing issue","reason":"not enough qualified details yet"}
2026-06-20T01:23:10.576Z LOG [SMS webhook async AI continuation completed] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","providerMessageSid":"textbee:6a35eb7c77015dcde1b6148b"}
2026-06-20T01:23:26.366Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:23:26.367Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a35eb8e77015dcde1b617cb"}
2026-06-20T01:23:26.374Z LOG [Inbound SMS linked to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T01:23:26.435Z LOG [Incoming SMS saved to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","messageId":"01840807-f989-4478-854a-12006a1f9ef6","messageProviderSid":"textbee:6a35eb8e77015dcde1b617cb","mode":"webhook_fast_save"}
2026-06-20T01:23:26.443Z LOG [SMS cost guard disabled for testing] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:23:27.888Z LOG [Customer SMS reply attempt] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":58}
2026-06-20T01:23:27.888Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":58}
2026-06-20T01:23:28.110Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eb9077015dcde1b6181b","recipientCount":1}}}
2026-06-20T01:23:28.110Z LOG [Customer SMS reply sent] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35eb9077015dcde1b6181b\",\"recipientCount\":1}}"}
2026-06-20T01:23:28.115Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Plumbing: Thanks — what is the full service address?"}
2026-06-20T01:23:28.117Z LOG [Owner alert check] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T01:23:28.118Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Plumbing issue","reason":"not enough qualified details yet"}
2026-06-20T01:23:28.118Z LOG [SMS webhook async AI continuation completed] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","providerMessageSid":"textbee:6a35eb8e77015dcde1b617cb"}
2026-06-20T01:23:45.476Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:23:45.477Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35eba177015dcde1b61b6e"}
2026-06-20T01:23:45.483Z LOG [Inbound SMS linked to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T01:23:45.488Z LOG [Incoming SMS saved to lead] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","messageId":"d8cb71c0-2c89-48bb-8805-2332c78582dc","messageProviderSid":"textbee:6a35eba177015dcde1b61b6e","mode":"webhook_fast_save"}
2026-06-20T01:23:45.509Z LOG [SMS cost guard disabled for testing] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:23:47.000Z LOG [Customer SMS reply attempt] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":91}
2026-06-20T01:23:47.001Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":91}
2026-06-20T01:23:47.205Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eba377015dcde1b61b9f","recipientCount":1}}}
2026-06-20T01:23:47.205Z LOG [Customer SMS reply sent] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35eba377015dcde1b61b9f\",\"recipientCount\":1}}"}
2026-06-20T01:23:47.209Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Plumbing: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T01:23:47.212Z LOG [Owner alert check] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T01:23:47.213Z LOG [Owner alert sending] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T01:23:47.217Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Plumbing\nName: Chuck\nPhone: +14783092224\nIssue: Plumbing issue\nAddress: 33536 Unicorn Ct, West","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T01:23:47.217Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":288}
2026-06-20T01:23:47.458Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35eba377015dcde1b61bcd","recipientCount":1}}}
2026-06-20T01:23:47.458Z LOG [Owner SMS TextBee result] accepted
2026-06-20T01:23:47.458Z LOG [Owner alert sms result] sent/accepted
2026-06-20T01:23:47.724Z LOG [Owner alert email result] sent/accepted
2026-06-20T01:23:47.731Z LOG [Owner alert completed] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T01:23:47.732Z LOG [SMS webhook async AI continuation completed] {"leadId":"ae364674-d3b0-4dc5-85f4-ea08229b9c19","phone":"+14783092224","providerMessageSid":"textbee:6a35eba177015dcde1b61b6e"}
2026-06-20T01:24:56.331Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:F3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw","callLegId":"d873b5d0-6c46-11f1-8f56-02420aef2520","callSessionId":"d873ab3a-6c46-11f1-b6c5-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T01:24:56.356Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T01:24:56.876Z LOG [Telnyx voice command ok: answer]
2026-06-20T01:24:56.876Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:24:56.876Z LOG [Missed-call recovery triggered] {"key":"d873ab3a-6c46-11f1-b6c5-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:24:56.884Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T01:24:57.282Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:F3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw","callLegId":"d873b5d0-6c46-11f1-8f56-02420aef2520","callSessionId":"d873ab3a-6c46-11f1-b6c5-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T01:24:57.288Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:24:57.289Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:24:57.289Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d873ab3a-6c46-11f1-b6c5-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:24:57.435Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T01:24:58.477Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:F3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw","callLegId":"d873b5d0-6c46-11f1-8f56-02420aef2520","callSessionId":"d873ab3a-6c46-11f1-b6c5-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T01:24:58.481Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:24:58.481Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:24:58.482Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d873ab3a-6c46-11f1-b6c5-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:24:58.482Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:25:03.430Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:F3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw","callLegId":"d873b5d0-6c46-11f1-8f56-02420aef2520","callSessionId":"d873ab3a-6c46-11f1-b6c5-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T01:25:03.440Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:25:03.440Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:25:03.441Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d873ab3a-6c46-11f1-b6c5-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:25:03.462Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:F3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw","callLegId":"d873b5d0-6c46-11f1-8f56-02420aef2520","callSessionId":"d873ab3a-6c46-11f1-b6c5-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T01:25:03.471Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:25:03.471Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:25:03.471Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d873ab3a-6c46-11f1-b6c5-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:25:03.472Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:25:03.617Z ERROR [Telnyx API error] {"path":"/calls/v3%3AF3IOd7A8MuHKFtByzR5KWiCIw7AXcxtn3mifbYD2I8e5AbBD4UgAMw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-20T01:25:03.618Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-20T01:25:06.893Z LOG [Missed-call recovery SMS attempt] {"leadId":"e25479d0-010f-466b-b058-504140d39f43","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T01:25:06.894Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T01:25:07.307Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ebf377015dcde1b62669","recipientCount":1}}}
2026-06-20T01:25:07.314Z LOG [Missed-call recovery SMS sent] {"leadId":"e25479d0-010f-466b-b058-504140d39f43","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ebf377015dcde1b62669\",\"recipientCount\":1}}"}
2026-06-20T01:25:07.323Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"e25479d0-010f-466b-b058-504140d39f43","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T01:38:04.985Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T01:38:05.074Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T01:38:05.078Z LOG Recover Missed Call running on port 3000
2026-06-20T01:38:05.079Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T01:38:05.079Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T01:39:05.908Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:PVIBo-eXfgwvp0uJrNpuqh_wtUCQsIYPWdMgLrr3A26LuDWOU9D3bQ","callLegId":"d2ec25b4-6c48-11f1-a02c-bebe5dff5faa","callSessionId":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T01:39:05.983Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T01:39:06.347Z LOG [Telnyx voice command ok: answer]
2026-06-20T01:39:06.348Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:39:06.349Z LOG [Missed-call recovery triggered] {"key":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T01:39:06.378Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T01:39:06.655Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:PVIBo-eXfgwvp0uJrNpuqh_wtUCQsIYPWdMgLrr3A26LuDWOU9D3bQ","callLegId":"d2ec25b4-6c48-11f1-a02c-bebe5dff5faa","callSessionId":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T01:39:06.670Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:39:06.673Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:39:06.673Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T01:39:06.816Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T01:39:07.456Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:PVIBo-eXfgwvp0uJrNpuqh_wtUCQsIYPWdMgLrr3A26LuDWOU9D3bQ","callLegId":"d2ec25b4-6c48-11f1-a02c-bebe5dff5faa","callSessionId":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T01:39:07.470Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:39:07.470Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:39:07.471Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T01:39:07.471Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:39:16.401Z LOG [Missed-call recovery SMS attempt] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T01:39:16.402Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T01:39:16.621Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef4477015dcde1b707f9","recipientCount":1}}}
2026-06-20T01:39:16.626Z LOG [Missed-call recovery SMS sent] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ef4477015dcde1b707f9\",\"recipientCount\":1}}"}
2026-06-20T01:39:16.638Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T01:39:17.719Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:PVIBo-eXfgwvp0uJrNpuqh_wtUCQsIYPWdMgLrr3A26LuDWOU9D3bQ","callLegId":"d2ec25b4-6c48-11f1-a02c-bebe5dff5faa","callSessionId":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T01:39:17.726Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:39:17.726Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:39:17.726Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T01:39:17.726Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T01:39:17.928Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T01:39:18.167Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:PVIBo-eXfgwvp0uJrNpuqh_wtUCQsIYPWdMgLrr3A26LuDWOU9D3bQ","callLegId":"d2ec25b4-6c48-11f1-a02c-bebe5dff5faa","callSessionId":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T01:39:18.174Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T01:39:18.174Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:39:18.174Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2ec1916-6c48-11f1-aab5-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T01:39:32.984Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:39:32.986Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"My kitchen faucet has a steady, rhythmic drip that is driving me crazy","providerMessageSid":"textbee:6a35ef5577015dcde1b70afc"}
2026-06-20T01:39:32.995Z LOG [Inbound SMS linked to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T01:39:33.003Z LOG [Incoming SMS saved to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","messageId":"c2eeab8e-e910-4e85-a817-74482c566014","messageProviderSid":"textbee:6a35ef5577015dcde1b70afc","mode":"webhook_fast_save"}
2026-06-20T01:39:33.031Z LOG [SMS cost guard disabled for testing] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:39:33.074Z LOG [Business-related inbound revived AI intake] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"intake","bodyPreview":"My kitchen faucet has a steady, rhythmic drip that is driving me crazy"}
2026-06-20T01:39:34.559Z LOG [Customer SMS reply attempt] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":64}
2026-06-20T01:39:34.560Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":64}
2026-06-20T01:39:34.742Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef5777015dcde1b70b67","recipientCount":1}}}
2026-06-20T01:39:34.742Z LOG [Customer SMS reply sent] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ef5777015dcde1b70b67\",\"recipientCount\":1}}"}
2026-06-20T01:39:34.753Z LOG [Owner alert check] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T01:39:34.754Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Faucet/fixture install or repair","reason":"not enough qualified details yet"}
2026-06-20T01:39:34.755Z LOG [SMS webhook async AI continuation completed] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","providerMessageSid":"textbee:6a35ef5577015dcde1b70afc"}
2026-06-20T01:39:47.271Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:39:47.271Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Stacy","providerMessageSid":"textbee:6a35ef6377015dcde1b70c83"}
2026-06-20T01:39:47.278Z LOG [Inbound SMS linked to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T01:39:47.285Z LOG [Incoming SMS saved to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","messageId":"58d67fdd-b252-4a3f-a623-86cbbc8de911","messageProviderSid":"textbee:6a35ef6377015dcde1b70c83","mode":"webhook_fast_save"}
2026-06-20T01:39:47.301Z LOG [SMS cost guard disabled for testing] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:39:48.445Z LOG [Customer SMS reply attempt] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":58}
2026-06-20T01:39:48.446Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":58}
2026-06-20T01:39:48.735Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef6577015dcde1b70cae","recipientCount":1}}}
2026-06-20T01:39:48.735Z LOG [Customer SMS reply sent] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ef6577015dcde1b70cae\",\"recipientCount\":1}}"}
2026-06-20T01:39:48.743Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Plumbing: Thanks — what is the full service address?"}
2026-06-20T01:39:48.748Z LOG [Owner alert check] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T01:39:48.748Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Faucet/fixture install or repair","reason":"not enough qualified details yet"}
2026-06-20T01:39:48.748Z LOG [SMS webhook async AI continuation completed] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","providerMessageSid":"textbee:6a35ef6377015dcde1b70c83"}
2026-06-20T01:40:06.404Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T01:40:06.405Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 Main St, Toledo, OH","providerMessageSid":"textbee:6a35ef7677015dcde1b71005"}
2026-06-20T01:40:06.414Z LOG [Inbound SMS linked to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T01:40:06.421Z LOG [Incoming SMS saved to lead] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","messageId":"196be72d-90ba-4602-8261-3b8987c36a3c","messageProviderSid":"textbee:6a35ef7677015dcde1b71005","mode":"webhook_fast_save"}
2026-06-20T01:40:06.433Z LOG [SMS cost guard disabled for testing] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T01:40:07.914Z LOG [Service area check] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"out_of_area","distanceMiles":null,"reason":"customer state OH differs from business state MI"}
2026-06-20T01:40:07.919Z LOG [Customer SMS reply attempt] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"out_of_service_area_reply","provider":"textbee","messageLength":129}
2026-06-20T01:40:07.920Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":129}
2026-06-20T01:40:08.235Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef7877015dcde1b7103e","recipientCount":1}}}
2026-06-20T01:40:08.235Z LOG [Customer SMS reply sent] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","context":"out_of_service_area_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35ef7877015dcde1b7103e\",\"recipientCount\":1}}"}
2026-06-20T01:40:08.244Z LOG [Owner lead-update SMS check] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":0}
2026-06-20T01:40:08.245Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Plumbing\nName: Stacy\nPhone: +14783092224\nIssue: Faucet/fixture install or repair\nAddress: 123 Main St","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T01:40:08.246Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":249}
2026-06-20T01:40:08.517Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef7877015dcde1b71076","recipientCount":1}}}
2026-06-20T01:40:08.518Z LOG [Owner SMS TextBee result] accepted
2026-06-20T01:40:08.518Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-20T01:40:08.518Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"needs_review","qualified":0,"replyPreview":"Metro Plumbing: Thanks — that address appears to be outside our normal service area, but the office will review it and follow up."}
2026-06-20T01:40:08.523Z LOG [Owner alert check] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","status":"needs_review","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-20T01:40:08.526Z LOG [Owner alert sending] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","reason":"service plus useful detail with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T01:40:08.528Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Plumbing\nName: Stacy\nPhone: +14783092224\nIssue: Faucet/fixture install or repair\nAddress: 123 ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T01:40:08.529Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":250}
2026-06-20T01:40:08.718Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35ef7877015dcde1b710a4","recipientCount":1}}}
2026-06-20T01:40:08.718Z LOG [Owner SMS TextBee result] accepted
2026-06-20T01:40:08.718Z LOG [Owner alert sms result] sent/accepted
2026-06-20T01:40:09.061Z LOG [Owner alert email result] sent/accepted
2026-06-20T01:40:09.068Z LOG [Owner alert completed] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T01:40:09.068Z LOG [SMS webhook async AI continuation completed] {"leadId":"101425d4-ee2d-4593-8857-8af9b77a5743","phone":"+14783092224","providerMessageSid":"textbee:6a35ef7677015dcde1b71005"}
2026-06-20T02:08:05.108Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Just checking in — do you still need help with Faucet/fixture install or repair? Reply with your address/city and preferred time, and Metro Dental can help with the next step. Reply STOP to opt out."}
2026-06-20T02:10:09.874Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T02:10:09.962Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T02:10:09.964Z LOG Recover Missed Call running on port 3000
2026-06-20T02:10:09.964Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T02:10:09.965Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T02:15:45.766Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T02:15:45.786Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T02:15:45.788Z LOG Recover Missed Call running on port 3000
2026-06-20T02:15:45.789Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T02:15:45.789Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T02:15:46.100Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:kMLyprL1qtPJ0Q4l1y4sW5uOJv4GTe8Rmsf6Fd0jagi-EofRkW0yhg","callLegId":"f11681ba-6c4d-11f1-9050-aa388819d4f4","callSessionId":"f11677ce-6c4d-11f1-91c0-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T02:15:46.361Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T02:15:46.770Z LOG [Telnyx voice command ok: answer]
2026-06-20T02:15:46.771Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:15:46.771Z LOG [Missed-call recovery triggered] {"key":"f11677ce-6c4d-11f1-91c0-aa388819d4f4:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:15:46.789Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T02:15:47.018Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:kMLyprL1qtPJ0Q4l1y4sW5uOJv4GTe8Rmsf6Fd0jagi-EofRkW0yhg","callLegId":"f11681ba-6c4d-11f1-9050-aa388819d4f4","callSessionId":"f11677ce-6c4d-11f1-91c0-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T02:15:47.036Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:15:47.037Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:15:47.037Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f11677ce-6c4d-11f1-91c0-aa388819d4f4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:15:47.199Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T02:15:47.946Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:kMLyprL1qtPJ0Q4l1y4sW5uOJv4GTe8Rmsf6Fd0jagi-EofRkW0yhg","callLegId":"f11681ba-6c4d-11f1-9050-aa388819d4f4","callSessionId":"f11677ce-6c4d-11f1-91c0-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T02:15:47.964Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:15:47.965Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:15:47.965Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f11677ce-6c4d-11f1-91c0-aa388819d4f4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:15:47.966Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:15:56.809Z LOG [Missed-call recovery SMS attempt] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T02:15:56.810Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-20T02:15:57.193Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35f7dd77015dcde1b95e56","recipientCount":1}}}
2026-06-20T02:15:57.208Z LOG [Missed-call recovery SMS sent] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35f7dd77015dcde1b95e56\",\"recipientCount\":1}}"}
2026-06-20T02:15:57.281Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T02:15:58.266Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:kMLyprL1qtPJ0Q4l1y4sW5uOJv4GTe8Rmsf6Fd0jagi-EofRkW0yhg","callLegId":"f11681ba-6c4d-11f1-9050-aa388819d4f4","callSessionId":"f11677ce-6c4d-11f1-91c0-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T02:15:58.275Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:15:58.276Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:15:58.276Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f11677ce-6c4d-11f1-91c0-aa388819d4f4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:15:58.276Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:15:58.481Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T02:15:58.707Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:kMLyprL1qtPJ0Q4l1y4sW5uOJv4GTe8Rmsf6Fd0jagi-EofRkW0yhg","callLegId":"f11681ba-6c4d-11f1-9050-aa388819d4f4","callSessionId":"f11677ce-6c4d-11f1-91c0-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T02:15:58.714Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:15:58.715Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:15:58.715Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"f11677ce-6c4d-11f1-91c0-aa388819d4f4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:16:17.917Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:16:17.919Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I'm having tooth pain and need to get in asap","providerMessageSid":"textbee:6a35f7f277015dcde1b96c8b"}
2026-06-20T02:16:17.927Z LOG [Inbound SMS linked to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T02:16:17.934Z LOG [Incoming SMS saved to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","messageId":"57c906e3-a17e-4180-a232-56b9aa667b18","messageProviderSid":"textbee:6a35f7f277015dcde1b96c8b","mode":"webhook_fast_save"}
2026-06-20T02:16:17.955Z LOG [SMS cost guard disabled for testing] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:16:17.969Z LOG [Business-related inbound revived AI intake] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"intake","bodyPreview":"I'm having tooth pain and need to get in asap"}
2026-06-20T02:16:20.199Z LOG [Customer SMS reply attempt] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T02:16:20.199Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T02:16:20.918Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35f7f577015dcde1b96e7c","recipientCount":1}}}
2026-06-20T02:16:20.919Z LOG [Customer SMS reply sent] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35f7f577015dcde1b96e7c\",\"recipientCount\":1}}"}
2026-06-20T02:16:20.943Z LOG [Owner alert check] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T02:16:20.944Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Dental","reason":"not enough qualified details yet"}
2026-06-20T02:16:20.945Z LOG [SMS webhook async AI continuation completed] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","providerMessageSid":"textbee:6a35f7f277015dcde1b96c8b"}
2026-06-20T02:16:32.418Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:16:32.418Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a35f7ff77015dcde1b97467"}
2026-06-20T02:16:32.426Z LOG [Inbound SMS linked to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T02:16:32.431Z LOG [Incoming SMS saved to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","messageId":"4ee26340-1c93-49e9-a5e0-dcbdb61b7a1c","messageProviderSid":"textbee:6a35f7ff77015dcde1b97467","mode":"webhook_fast_save"}
2026-06-20T02:16:32.444Z LOG [SMS cost guard disabled for testing] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:16:33.664Z LOG [Customer SMS reply attempt] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":56}
2026-06-20T02:16:33.664Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":56}
2026-06-20T02:16:33.997Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35f80277015dcde1b975fb","recipientCount":1}}}
2026-06-20T02:16:33.998Z LOG [Customer SMS reply sent] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35f80277015dcde1b975fb\",\"recipientCount\":1}}"}
2026-06-20T02:16:34.006Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Dental: Thanks — what is the full service address?"}
2026-06-20T02:16:34.009Z LOG [Owner alert check] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T02:16:34.009Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Dental","reason":"not enough qualified details yet"}
2026-06-20T02:16:34.009Z LOG [SMS webhook async AI continuation completed] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","providerMessageSid":"textbee:6a35f7ff77015dcde1b97467"}
2026-06-20T02:17:03.464Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:17:03.465Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a35f81f77015dcde1b985fe"}
2026-06-20T02:17:03.476Z LOG [Inbound SMS linked to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T02:17:03.486Z LOG [Incoming SMS saved to lead] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","messageId":"df5a1535-68fb-4016-9679-8de31b575cb6","messageProviderSid":"textbee:6a35f81f77015dcde1b985fe","mode":"webhook_fast_save"}
2026-06-20T02:17:03.498Z LOG [SMS cost guard disabled for testing] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:17:04.811Z LOG [Service area check] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-20T02:17:04.817Z LOG [Customer SMS reply attempt] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":89}
2026-06-20T02:17:04.818Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":89}
2026-06-20T02:17:06.175Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35f82277015dcde1b98728","recipientCount":1}}}
2026-06-20T02:17:06.175Z LOG [Customer SMS reply sent] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35f82277015dcde1b98728\",\"recipientCount\":1}}"}
2026-06-20T02:17:06.185Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Dental: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T02:17:06.190Z LOG [Owner alert check] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T02:17:06.192Z LOG [Owner alert sending] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T02:17:06.194Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Dental\nName: Chuck Simms\nPhone: +14783092224\nIssue: Dental\nAddress: 33536 Unicorn Ct, Westland","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T02:17:06.195Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":241}
2026-06-20T02:17:06.499Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35f82277015dcde1b9879a","recipientCount":1}}}
2026-06-20T02:17:06.500Z LOG [Owner SMS TextBee result] accepted
2026-06-20T02:17:06.500Z LOG [Owner alert sms result] sent/accepted
2026-06-20T02:17:06.649Z LOG [Owner alert email result] sent/accepted
2026-06-20T02:17:06.655Z LOG [Owner alert completed] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T02:17:06.655Z LOG [SMS webhook async AI continuation completed] {"leadId":"b68fc5e5-53e6-4b80-9205-a3e9761f3f33","phone":"+14783092224","providerMessageSid":"textbee:6a35f81f77015dcde1b985fe"}
2026-06-20T02:32:13.473Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T02:32:13.489Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T02:32:13.491Z LOG Recover Missed Call running on port 3000
2026-06-20T02:32:13.491Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T02:32:13.491Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T02:32:49.106Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:wSgA9eqFEgRYy5G79NYsJ-O_lh6cmRCqDmi0Dgy1gui4Qqt8U3B5ig","callLegId":"544350b8-6c50-11f1-86c6-02420aef8a20","callSessionId":"54434870-6c50-11f1-bf60-02420aef8a20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T02:32:49.150Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T02:32:49.340Z LOG [Telnyx voice command ok: answer]
2026-06-20T02:32:49.341Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:32:49.341Z LOG [Missed-call recovery triggered] {"key":"54434870-6c50-11f1-bf60-02420aef8a20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:32:49.353Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T02:32:49.411Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:wSgA9eqFEgRYy5G79NYsJ-O_lh6cmRCqDmi0Dgy1gui4Qqt8U3B5ig","callLegId":"544350b8-6c50-11f1-86c6-02420aef8a20","callSessionId":"54434870-6c50-11f1-bf60-02420aef8a20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T02:32:49.416Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:32:49.417Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:32:49.417Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"54434870-6c50-11f1-bf60-02420aef8a20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:32:49.536Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T02:32:49.919Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:wSgA9eqFEgRYy5G79NYsJ-O_lh6cmRCqDmi0Dgy1gui4Qqt8U3B5ig","callLegId":"544350b8-6c50-11f1-86c6-02420aef8a20","callSessionId":"54434870-6c50-11f1-bf60-02420aef8a20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T02:32:49.926Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:32:49.926Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:32:49.927Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"54434870-6c50-11f1-bf60-02420aef8a20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:32:49.927Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:32:59.360Z LOG [Missed-call recovery SMS attempt] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T02:32:59.361Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-20T02:32:59.647Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fbdb77015dcde1ba070a","recipientCount":1}}}
2026-06-20T02:32:59.652Z LOG [Missed-call recovery SMS sent] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fbdb77015dcde1ba070a\",\"recipientCount\":1}}"}
2026-06-20T02:32:59.661Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T02:33:00.144Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:wSgA9eqFEgRYy5G79NYsJ-O_lh6cmRCqDmi0Dgy1gui4Qqt8U3B5ig","callLegId":"544350b8-6c50-11f1-86c6-02420aef8a20","callSessionId":"54434870-6c50-11f1-bf60-02420aef8a20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T02:33:00.149Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:33:00.150Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:33:00.150Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"54434870-6c50-11f1-bf60-02420aef8a20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:33:00.150Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:33:00.256Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T02:33:00.340Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:wSgA9eqFEgRYy5G79NYsJ-O_lh6cmRCqDmi0Dgy1gui4Qqt8U3B5ig","callLegId":"544350b8-6c50-11f1-86c6-02420aef8a20","callSessionId":"54434870-6c50-11f1-bf60-02420aef8a20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T02:33:00.345Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:33:00.346Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:33:00.346Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"54434870-6c50-11f1-bf60-02420aef8a20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:33:35.474Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:33:35.477Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I need to make an appointment for a cleaning","providerMessageSid":"textbee:6a35fbff77015dcde1ba0c6c"}
2026-06-20T02:33:35.484Z LOG [Inbound SMS linked to lead] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T02:33:35.498Z LOG [Incoming SMS saved to lead] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","messageId":"3bd8c030-53d0-4684-b4db-62d27d426281","messageProviderSid":"textbee:6a35fbff77015dcde1ba0c6c","mode":"webhook_fast_save"}
2026-06-20T02:33:35.514Z LOG [SMS cost guard disabled for testing] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:33:35.527Z LOG [Business-related inbound revived AI intake] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","status":"intake","bodyPreview":"I need to make an appointment for a cleaning"}
2026-06-20T02:33:36.960Z LOG [Customer SMS reply attempt] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T02:33:36.960Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T02:33:37.261Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fc0177015dcde1ba0d2c","recipientCount":1}}}
2026-06-20T02:33:37.261Z LOG [Customer SMS reply sent] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fc0177015dcde1ba0d2c\",\"recipientCount\":1}}"}
2026-06-20T02:33:37.272Z LOG [Owner alert check] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T02:33:37.273Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Cleaning / checkup","reason":"not enough qualified details yet"}
2026-06-20T02:33:37.274Z LOG [SMS webhook async AI continuation completed] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","providerMessageSid":"textbee:6a35fbff77015dcde1ba0c6c"}
2026-06-20T02:33:47.813Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:33:47.813Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a35fc0c77015dcde1ba0e42"}
2026-06-20T02:33:47.818Z LOG [Inbound SMS linked to lead] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T02:33:47.832Z LOG [Incoming SMS saved to lead] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","messageId":"c0fac19f-92d4-4055-9d62-3e416b63cc74","messageProviderSid":"textbee:6a35fc0c77015dcde1ba0e42","mode":"webhook_fast_save"}
2026-06-20T02:33:47.839Z LOG [SMS cost guard disabled for testing] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:33:49.722Z LOG [Customer SMS reply attempt] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":89}
2026-06-20T02:33:49.722Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":89}
2026-06-20T02:33:49.925Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fc0e77015dcde1ba0ead","recipientCount":1}}}
2026-06-20T02:33:49.925Z LOG [Customer SMS reply sent] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fc0e77015dcde1ba0ead\",\"recipientCount\":1}}"}
2026-06-20T02:33:49.936Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"ready_to_book","qualified":1,"replyPreview":"Metro Dental: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T02:33:49.939Z LOG [Owner alert check] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","status":"ready_to_book","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T02:33:49.940Z LOG [Owner alert sending] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T02:33:49.941Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Dental\nName: Chuck Simms\nPhone: +14783092224\nIssue: Cleaning / checkup\nUrgency: routine\nNotes:","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T02:33:49.942Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":178}
2026-06-20T02:33:50.274Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fc0e77015dcde1ba0eec","recipientCount":1}}}
2026-06-20T02:33:50.274Z LOG [Owner SMS TextBee result] accepted
2026-06-20T02:33:50.274Z LOG [Owner alert sms result] sent/accepted
2026-06-20T02:33:50.334Z LOG [Owner alert email result] sent/accepted
2026-06-20T02:33:50.349Z LOG [Owner alert completed] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T02:33:50.349Z LOG [SMS webhook async AI continuation completed] {"leadId":"a03bc389-645a-4917-8d14-2ff5af9794dd","phone":"+14783092224","providerMessageSid":"textbee:6a35fc0c77015dcde1ba0e42"}
2026-06-20T02:35:23.329Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:aAu_wdThmpbPJf6zRA16wIhPs3ZrBfDBh5yU8eIWcbtuBpnE0ulUTQ","callLegId":"b0325ca2-6c50-11f1-a7a4-02420aef89a1","callSessionId":"b03253e2-6c50-11f1-9376-02420aef89a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T02:35:23.403Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T02:35:23.539Z LOG [Telnyx voice command ok: answer]
2026-06-20T02:35:23.539Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:35:23.539Z LOG [Missed-call recovery triggered] {"key":"b03253e2-6c50-11f1-9376-02420aef89a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T02:35:23.561Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T02:35:23.617Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:aAu_wdThmpbPJf6zRA16wIhPs3ZrBfDBh5yU8eIWcbtuBpnE0ulUTQ","callLegId":"b0325ca2-6c50-11f1-a7a4-02420aef89a1","callSessionId":"b03253e2-6c50-11f1-9376-02420aef89a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T02:35:23.626Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:35:23.626Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:35:23.627Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b03253e2-6c50-11f1-9376-02420aef89a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T02:35:23.706Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T02:35:24.078Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:aAu_wdThmpbPJf6zRA16wIhPs3ZrBfDBh5yU8eIWcbtuBpnE0ulUTQ","callLegId":"b0325ca2-6c50-11f1-a7a4-02420aef89a1","callSessionId":"b03253e2-6c50-11f1-9376-02420aef89a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T02:35:24.085Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:35:24.085Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:35:24.085Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b03253e2-6c50-11f1-9376-02420aef89a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T02:35:24.085Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:35:33.574Z LOG [Missed-call recovery SMS attempt] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T02:35:33.574Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-20T02:35:33.761Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fc7677015dcde1ba1fa4","recipientCount":1}}}
2026-06-20T02:35:33.767Z LOG [Missed-call recovery SMS sent] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fc7677015dcde1ba1fa4\",\"recipientCount\":1}}"}
2026-06-20T02:35:33.776Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T02:35:34.687Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:aAu_wdThmpbPJf6zRA16wIhPs3ZrBfDBh5yU8eIWcbtuBpnE0ulUTQ","callLegId":"b0325ca2-6c50-11f1-a7a4-02420aef89a1","callSessionId":"b03253e2-6c50-11f1-9376-02420aef89a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T02:35:34.693Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:35:34.693Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:35:34.693Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b03253e2-6c50-11f1-9376-02420aef89a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T02:35:34.693Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T02:35:34.788Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T02:35:34.867Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:aAu_wdThmpbPJf6zRA16wIhPs3ZrBfDBh5yU8eIWcbtuBpnE0ulUTQ","callLegId":"b0325ca2-6c50-11f1-a7a4-02420aef89a1","callSessionId":"b03253e2-6c50-11f1-9376-02420aef89a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T02:35:34.873Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T02:35:34.873Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:35:34.874Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b03253e2-6c50-11f1-9376-02420aef89a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T02:36:19.113Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:36:19.113Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I hear a loud rattling noise underneath the car whenever I am idling at a red li","providerMessageSid":"textbee:6a35fca377015dcde1ba2a3c"}
2026-06-20T02:36:19.120Z LOG [Inbound SMS linked to lead] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T02:36:19.126Z LOG [Incoming SMS saved to lead] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","messageId":"5a595800-009c-41d3-b111-8c9bda01b1b4","messageProviderSid":"textbee:6a35fca377015dcde1ba2a3c","mode":"webhook_fast_save"}
2026-06-20T02:36:19.132Z LOG [SMS cost guard disabled for testing] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:36:19.151Z LOG [Business-related inbound revived AI intake] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","status":"intake","bodyPreview":"I hear a loud rattling noise underneath the car whenever I am idling at a red light."}
2026-06-20T02:36:20.284Z LOG [Customer SMS reply attempt] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":67}
2026-06-20T02:36:20.284Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":67}
2026-06-20T02:36:20.587Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fca477015dcde1ba2a7f","recipientCount":1}}}
2026-06-20T02:36:20.587Z LOG [Customer SMS reply sent] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fca477015dcde1ba2a7f\",\"recipientCount\":1}}"}
2026-06-20T02:36:20.598Z LOG [Owner alert check] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T02:36:20.598Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Diagnostic / warning light","reason":"not enough qualified details yet"}
2026-06-20T02:36:20.599Z LOG [SMS webhook async AI continuation completed] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","providerMessageSid":"textbee:6a35fca377015dcde1ba2a3c"}
2026-06-20T02:36:34.493Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T02:36:34.494Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a35fcb277015dcde1ba2ee1"}
2026-06-20T02:36:34.499Z LOG [Inbound SMS linked to lead] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T02:36:34.507Z LOG [Incoming SMS saved to lead] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","messageId":"adf40d05-9a8a-48f0-8866-565ac5e29f31","messageProviderSid":"textbee:6a35fcb277015dcde1ba2ee1","mode":"webhook_fast_save"}
2026-06-20T02:36:34.521Z LOG [SMS cost guard disabled for testing] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T02:36:35.859Z LOG [Customer SMS reply attempt] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":94}
2026-06-20T02:36:35.859Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T02:36:36.106Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fcb477015dcde1ba2f84","recipientCount":1}}}
2026-06-20T02:36:36.106Z LOG [Customer SMS reply sent] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a35fcb477015dcde1ba2f84\",\"recipientCount\":1}}"}
2026-06-20T02:36:36.111Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Auto Repair: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T02:36:36.117Z LOG [Owner alert check] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T02:36:36.118Z LOG [Owner alert sending] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T02:36:36.119Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Auto Repair\nName: Chuck Simms\nPhone: +14783092224\nIssue: Diagnostic / warning light\nUrgency: u","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T02:36:36.120Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":236}
2026-06-20T02:36:36.307Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a35fcb477015dcde1ba2fb2","recipientCount":1}}}
2026-06-20T02:36:36.307Z LOG [Owner SMS TextBee result] accepted
2026-06-20T02:36:36.308Z LOG [Owner alert sms result] sent/accepted
2026-06-20T02:36:36.584Z LOG [Owner alert email result] sent/accepted
2026-06-20T02:36:36.589Z LOG [Owner alert completed] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T02:36:36.590Z LOG [SMS webhook async AI continuation completed] {"leadId":"ed24a0f0-bea3-40a5-8382-88c9403f46ef","phone":"+14783092224","providerMessageSid":"textbee:6a35fcb277015dcde1ba2ee1"}
2026-06-20T09:50:18.462Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:4W9eaz3V6DExE2T1EN5jeP0q1IGwaOmLAOpJMgdYekvjVrDOHxKg4Q","callLegId":"72651d8c-6c8d-11f1-91bd-02420aef8fa1","callSessionId":"726512ce-6c8d-11f1-a465-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T09:50:18.549Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T09:50:18.805Z LOG [Telnyx voice command ok: answer]
2026-06-20T09:50:18.805Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T09:50:18.806Z LOG [Missed-call recovery triggered] {"key":"726512ce-6c8d-11f1-a465-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T09:50:18.820Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T09:50:18.884Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:4W9eaz3V6DExE2T1EN5jeP0q1IGwaOmLAOpJMgdYekvjVrDOHxKg4Q","callLegId":"72651d8c-6c8d-11f1-91bd-02420aef8fa1","callSessionId":"726512ce-6c8d-11f1-a465-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T09:50:18.897Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T09:50:18.898Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T09:50:18.898Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"726512ce-6c8d-11f1-a465-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T09:50:18.967Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T09:50:19.316Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:4W9eaz3V6DExE2T1EN5jeP0q1IGwaOmLAOpJMgdYekvjVrDOHxKg4Q","callLegId":"72651d8c-6c8d-11f1-91bd-02420aef8fa1","callSessionId":"726512ce-6c8d-11f1-a465-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T09:50:19.327Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T09:50:19.328Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T09:50:19.328Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"726512ce-6c8d-11f1-a465-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T09:50:19.328Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T09:50:28.831Z LOG [Missed-call recovery SMS attempt] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T09:50:28.832Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":93}
2026-06-20T09:50:29.544Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:4W9eaz3V6DExE2T1EN5jeP0q1IGwaOmLAOpJMgdYekvjVrDOHxKg4Q","callLegId":"72651d8c-6c8d-11f1-91bd-02420aef8fa1","callSessionId":"726512ce-6c8d-11f1-a465-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T09:50:29.557Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T09:50:29.557Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T09:50:29.558Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"726512ce-6c8d-11f1-a465-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T09:50:29.558Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T09:50:29.664Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T09:50:29.690Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36626677015dcde1d7cbdb","recipientCount":1}}}
2026-06-20T09:50:29.697Z LOG [Missed-call recovery SMS sent] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36626677015dcde1d7cbdb\",\"recipientCount\":1}}"}
2026-06-20T09:50:29.707Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T09:50:29.754Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:4W9eaz3V6DExE2T1EN5jeP0q1IGwaOmLAOpJMgdYekvjVrDOHxKg4Q","callLegId":"72651d8c-6c8d-11f1-91bd-02420aef8fa1","callSessionId":"726512ce-6c8d-11f1-a465-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T09:50:29.759Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T09:50:29.759Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T09:50:29.759Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"726512ce-6c8d-11f1-a465-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T09:51:22.943Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T09:51:22.943Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have rats in the basement","providerMessageSid":"textbee:6a36629b77015dcde1d7e41a"}
2026-06-20T09:51:22.951Z LOG [Inbound SMS linked to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T09:51:22.957Z LOG [Incoming SMS saved to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","messageId":"8db3b4d3-41af-4256-95cc-a9244838481b","messageProviderSid":"textbee:6a36629b77015dcde1d7e41a","mode":"webhook_fast_save"}
2026-06-20T09:51:22.982Z LOG [SMS cost guard disabled for testing] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T09:51:23.041Z LOG [Off-scope unrelated inbound saved with no automated reply] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","businessType":"roofing","bodyPreview":"I have rats in the basement"}
2026-06-20T09:51:23.042Z LOG [SMS webhook async AI continuation completed] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","providerMessageSid":"textbee:6a36629b77015dcde1d7e41a"}
2026-06-20T09:52:28.923Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T09:52:28.924Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Sorry, meant our roof is leaking","providerMessageSid":"textbee:6a3662dd77015dcde1d7ed9e"}
2026-06-20T09:52:28.930Z LOG [Inbound SMS linked to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"needs_review","mode":"webhook_fast_save"}
2026-06-20T09:52:28.934Z LOG [Incoming SMS saved to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","messageId":"3a286742-1304-4c65-999a-eacbebacf1b9","messageProviderSid":"textbee:6a3662dd77015dcde1d7ed9e","mode":"webhook_fast_save"}
2026-06-20T09:52:28.939Z LOG [SMS cost guard disabled for testing] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T09:52:28.947Z LOG [Business-related inbound revived AI intake] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"intake","bodyPreview":"Sorry, meant our roof is leaking"}
2026-06-20T09:52:30.962Z LOG [Customer SMS reply attempt] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":57}
2026-06-20T09:52:30.963Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":57}
2026-06-20T09:52:31.458Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3662e077015dcde1d7eee0","recipientCount":1}}}
2026-06-20T09:52:31.459Z LOG [Customer SMS reply sent] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3662e077015dcde1d7eee0\",\"recipientCount\":1}}"}
2026-06-20T09:52:31.465Z LOG [Owner alert check] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T09:52:31.465Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Roof leak / water damage","reason":"not enough qualified details yet"}
2026-06-20T09:52:31.466Z LOG [SMS webhook async AI continuation completed] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","providerMessageSid":"textbee:6a3662dd77015dcde1d7ed9e"}
2026-06-20T09:53:57.763Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T09:53:57.764Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 main st, ann arbor, mi 48186","providerMessageSid":"textbee:6a36633677015dcde1d8017a"}
2026-06-20T09:53:57.768Z LOG [Inbound SMS linked to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T09:53:57.781Z LOG [Incoming SMS saved to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","messageId":"0b7eb67e-992b-4cdc-9202-f8a784e1d9a5","messageProviderSid":"textbee:6a36633677015dcde1d8017a","mode":"webhook_fast_save"}
2026-06-20T09:53:57.849Z LOG [SMS cost guard disabled for testing] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T09:53:59.210Z LOG [Service area check] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer ZIP matched the business ZIP"}
2026-06-20T09:53:59.213Z LOG [Customer SMS reply attempt] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":69}
2026-06-20T09:53:59.213Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":69}
2026-06-20T09:53:59.419Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36633877015dcde1d801c8","recipientCount":1}}}
2026-06-20T09:53:59.419Z LOG [Customer SMS reply sent] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36633877015dcde1d801c8\",\"recipientCount\":1}}"}
2026-06-20T09:53:59.423Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Roofing: Thanks — is this a residential or commercial property?"}
2026-06-20T09:53:59.426Z LOG [Owner alert check] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T09:53:59.427Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Roof leak / water damage","reason":"not enough qualified details yet"}
2026-06-20T09:53:59.427Z LOG [SMS webhook async AI continuation completed] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","providerMessageSid":"textbee:6a36633677015dcde1d8017a"}
2026-06-20T09:54:14.339Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T09:54:14.339Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"residential","providerMessageSid":"textbee:6a36634777015dcde1d803b1"}
2026-06-20T09:54:14.347Z LOG [Inbound SMS linked to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T09:54:14.351Z LOG [Incoming SMS saved to lead] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","messageId":"ca0e4e61-e83f-4c83-a62a-37082e938f88","messageProviderSid":"textbee:6a36634777015dcde1d803b1","mode":"webhook_fast_save"}
2026-06-20T09:54:14.374Z LOG [SMS cost guard disabled for testing] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T09:54:15.514Z LOG [Service area check] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer ZIP matched the business ZIP"}
2026-06-20T09:54:15.537Z LOG [Customer SMS reply attempt] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":90}
2026-06-20T09:54:15.538Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":90}
2026-06-20T09:54:15.922Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36634877015dcde1d8048a","recipientCount":1}}}
2026-06-20T09:54:15.922Z LOG [Customer SMS reply sent] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36634877015dcde1d8048a\",\"recipientCount\":1}}"}
2026-06-20T09:54:15.927Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Roofing: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T09:54:15.930Z LOG [Owner alert check] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T09:54:15.931Z LOG [Owner alert sending] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T09:54:15.932Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Roofing\nName: Residential\nPhone: +14783092224\nIssue: Roof leak / water damage\nAddress: 123 mai","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T09:54:15.932Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":287}
2026-06-20T09:54:16.232Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36634977015dcde1d804d5","recipientCount":1}}}
2026-06-20T09:54:16.232Z LOG [Owner SMS TextBee result] accepted
2026-06-20T09:54:16.233Z LOG [Owner alert sms result] sent/accepted
2026-06-20T09:54:16.431Z LOG [Owner alert email result] sent/accepted
2026-06-20T09:54:16.438Z LOG [Owner alert completed] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T09:54:16.438Z LOG [SMS webhook async AI continuation completed] {"leadId":"9de88964-d3fa-48b4-82a1-d8f67faf74a9","phone":"+14783092224","providerMessageSid":"textbee:6a36634777015dcde1d803b1"}
2026-06-20T10:03:11.199Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T10:03:11.288Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T10:03:11.291Z LOG Recover Missed Call running on port 3000
2026-06-20T10:03:11.292Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T10:03:11.292Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T10:05:54.395Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:6ANJE4bpWmmCKa_PPZAPYhHoF8PdzQVBSJVFntyPVyI38iOkPlBVow","callLegId":"9ff37922-6c8f-11f1-8173-da02a6c3701e","callSessionId":"9ff37148-6c8f-11f1-8d56-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T10:05:54.610Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T10:05:54.979Z LOG [Telnyx voice command ok: answer]
2026-06-20T10:05:54.980Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:05:54.981Z LOG [Missed-call recovery triggered] {"key":"9ff37148-6c8f-11f1-8d56-da02a6c3701e:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:05:55.006Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T10:05:55.317Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:6ANJE4bpWmmCKa_PPZAPYhHoF8PdzQVBSJVFntyPVyI38iOkPlBVow","callLegId":"9ff37922-6c8f-11f1-8173-da02a6c3701e","callSessionId":"9ff37148-6c8f-11f1-8d56-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T10:05:55.332Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:05:55.333Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:05:55.333Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9ff37148-6c8f-11f1-8d56-da02a6c3701e:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:05:55.536Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T10:05:56.470Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:6ANJE4bpWmmCKa_PPZAPYhHoF8PdzQVBSJVFntyPVyI38iOkPlBVow","callLegId":"9ff37922-6c8f-11f1-8173-da02a6c3701e","callSessionId":"9ff37148-6c8f-11f1-8d56-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T10:05:56.482Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:05:56.483Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:05:56.483Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9ff37148-6c8f-11f1-8d56-da02a6c3701e:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:05:56.483Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:06:05.025Z LOG [Missed-call recovery SMS attempt] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T10:06:05.026Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-20T10:06:05.886Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36660e77015dcde1d9dac2","recipientCount":1}}}
2026-06-20T10:06:05.892Z LOG [Missed-call recovery SMS sent] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36660e77015dcde1d9dac2\",\"recipientCount\":1}}"}
2026-06-20T10:06:05.905Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T10:06:06.661Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:6ANJE4bpWmmCKa_PPZAPYhHoF8PdzQVBSJVFntyPVyI38iOkPlBVow","callLegId":"9ff37922-6c8f-11f1-8173-da02a6c3701e","callSessionId":"9ff37148-6c8f-11f1-8d56-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T10:06:06.666Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:06:06.667Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:06:06.667Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9ff37148-6c8f-11f1-8d56-da02a6c3701e:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:06:06.667Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:06:06.822Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T10:06:07.102Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:6ANJE4bpWmmCKa_PPZAPYhHoF8PdzQVBSJVFntyPVyI38iOkPlBVow","callLegId":"9ff37922-6c8f-11f1-8173-da02a6c3701e","callSessionId":"9ff37148-6c8f-11f1-8d56-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T10:06:07.108Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:06:07.109Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:06:07.109Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9ff37148-6c8f-11f1-8d56-da02a6c3701e:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:06:30.773Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:06:30.775Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Need a tow for my vehicle, to the repair shop","providerMessageSid":"textbee:6a36662777015dcde1d9ec78"}
2026-06-20T10:06:30.784Z LOG [Inbound SMS linked to lead] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T10:06:30.790Z LOG [Incoming SMS saved to lead] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","messageId":"06341618-fc58-4449-84d6-595e77faf356","messageProviderSid":"textbee:6a36662777015dcde1d9ec78","mode":"webhook_fast_save"}
2026-06-20T10:06:30.805Z LOG [SMS cost guard disabled for testing] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:06:30.860Z LOG [Business-related inbound revived AI intake] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","status":"intake","bodyPreview":"Need a tow for my vehicle, to the repair shop"}
2026-06-20T10:06:32.838Z LOG [Customer SMS reply attempt] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T10:06:32.838Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T10:06:33.271Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36662a77015dcde1d9edbb","recipientCount":1}}}
2026-06-20T10:06:33.272Z LOG [Customer SMS reply sent] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36662a77015dcde1d9edbb\",\"recipientCount\":1}}"}
2026-06-20T10:06:33.283Z LOG [Owner alert check] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:06:33.284Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Tow request","reason":"not enough qualified details yet"}
2026-06-20T10:06:33.285Z LOG [SMS webhook async AI continuation completed] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","providerMessageSid":"textbee:6a36662777015dcde1d9ec78"}
2026-06-20T10:06:44.587Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:06:44.588Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a36663577015dcde1d9f148"}
2026-06-20T10:06:44.604Z LOG [Inbound SMS linked to lead] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:06:44.611Z LOG [Incoming SMS saved to lead] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","messageId":"44df4cee-b3d9-4c19-a773-60aee2e8da0d","messageProviderSid":"textbee:6a36663577015dcde1d9f148","mode":"webhook_fast_save"}
2026-06-20T10:06:44.632Z LOG [SMS cost guard disabled for testing] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:06:45.430Z LOG [Customer SMS reply attempt] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":89}
2026-06-20T10:06:45.430Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":89}
2026-06-20T10:06:45.616Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36663677015dcde1d9f193","recipientCount":1}}}
2026-06-20T10:06:45.616Z LOG [Customer SMS reply sent] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36663677015dcde1d9f193\",\"recipientCount\":1}}"}
2026-06-20T10:06:45.624Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Towing: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T10:06:45.628Z LOG [Owner alert check] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T10:06:45.629Z LOG [Owner alert sending] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T10:06:45.631Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Towing\nName: Chuck\nPhone: +14783092224\nIssue: Tow request\nNotes: Customer needs a tow to the r","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T10:06:45.631Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":149}
2026-06-20T10:06:46.055Z LOG [Owner alert email result] sent/accepted
2026-06-20T10:06:46.863Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36663777015dcde1d9f213","recipientCount":1}}}
2026-06-20T10:06:46.865Z LOG [Owner SMS TextBee result] accepted
2026-06-20T10:06:46.865Z LOG [Owner alert sms result] sent/accepted
2026-06-20T10:06:46.871Z LOG [Owner alert completed] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T10:06:46.871Z LOG [SMS webhook async AI continuation completed] {"leadId":"9c04cbb8-ab33-4c31-91f0-2cb73c800b2d","phone":"+14783092224","providerMessageSid":"textbee:6a36663577015dcde1d9f148"}
2026-06-20T10:15:58.002Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T10:15:58.088Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T10:15:58.090Z LOG Recover Missed Call running on port 3000
2026-06-20T10:15:58.090Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T10:15:58.091Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T10:16:01.002Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:pC99YF912ghW7wXUzXQ7jbAXwLLnr8YTcpgkgeG3siftMxePBghMYg","callLegId":"09d773ec-6c91-11f1-98cc-02420aef8ba1","callSessionId":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T10:16:01.113Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T10:16:01.274Z LOG [Telnyx voice command ok: answer]
2026-06-20T10:16:01.274Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:16:01.275Z LOG [Missed-call recovery triggered] {"key":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:16:01.288Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T10:16:01.387Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:pC99YF912ghW7wXUzXQ7jbAXwLLnr8YTcpgkgeG3siftMxePBghMYg","callLegId":"09d773ec-6c91-11f1-98cc-02420aef8ba1","callSessionId":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T10:16:01.393Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:16:01.393Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:16:01.394Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:16:01.472Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T10:16:01.855Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:pC99YF912ghW7wXUzXQ7jbAXwLLnr8YTcpgkgeG3siftMxePBghMYg","callLegId":"09d773ec-6c91-11f1-98cc-02420aef8ba1","callSessionId":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T10:16:01.870Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:16:01.871Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:16:01.871Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:16:01.872Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:16:11.305Z LOG [Missed-call recovery SMS attempt] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T10:16:11.306Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-20T10:16:11.857Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36686c77015dcde1da8966","recipientCount":1}}}
2026-06-20T10:16:11.870Z LOG [Missed-call recovery SMS sent] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36686c77015dcde1da8966\",\"recipientCount\":1}}"}
2026-06-20T10:16:11.942Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T10:16:12.043Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:pC99YF912ghW7wXUzXQ7jbAXwLLnr8YTcpgkgeG3siftMxePBghMYg","callLegId":"09d773ec-6c91-11f1-98cc-02420aef8ba1","callSessionId":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T10:16:12.051Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:16:12.051Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:16:12.052Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:16:12.052Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:16:12.138Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T10:16:12.217Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:pC99YF912ghW7wXUzXQ7jbAXwLLnr8YTcpgkgeG3siftMxePBghMYg","callLegId":"09d773ec-6c91-11f1-98cc-02420aef8ba1","callSessionId":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T10:16:12.222Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:16:12.222Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:16:12.223Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"09d76b2c-6c91-11f1-bb7f-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:16:52.454Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:16:52.456Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"need a tow to the repair facility","providerMessageSid":"textbee:6a36689577015dcde1da9c55"}
2026-06-20T10:16:52.465Z LOG [Inbound SMS linked to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T10:16:52.490Z LOG [Incoming SMS saved to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","messageId":"4ec0b9e9-9864-4a08-b9a7-0e2c91e13395","messageProviderSid":"textbee:6a36689577015dcde1da9c55","mode":"webhook_fast_save"}
2026-06-20T10:16:52.501Z LOG [SMS cost guard disabled for testing] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:16:52.516Z LOG [Business-related inbound revived AI intake] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"intake","bodyPreview":"need a tow to the repair facility"}
2026-06-20T10:16:53.766Z LOG [Customer SMS reply attempt] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T10:16:53.767Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T10:16:54.559Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36689777015dcde1da9cd9","recipientCount":1}}}
2026-06-20T10:16:54.560Z LOG [Customer SMS reply sent] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36689777015dcde1da9cd9\",\"recipientCount\":1}}"}
2026-06-20T10:16:54.575Z LOG [Owner alert check] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:16:54.575Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Tow request","reason":"not enough qualified details yet"}
2026-06-20T10:16:54.576Z LOG [SMS webhook async AI continuation completed] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","providerMessageSid":"textbee:6a36689577015dcde1da9c55"}
2026-06-20T10:17:11.309Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:17:11.310Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Charlie","providerMessageSid":"textbee:6a3668a777015dcde1daa2cf"}
2026-06-20T10:17:11.321Z LOG [Inbound SMS linked to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:17:11.325Z LOG [Incoming SMS saved to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","messageId":"7c81b3e2-5396-4419-b26e-b66b54f42d53","messageProviderSid":"textbee:6a3668a777015dcde1daa2cf","mode":"webhook_fast_save"}
2026-06-20T10:17:11.338Z LOG [SMS cost guard disabled for testing] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:17:12.586Z LOG [Customer SMS reply attempt] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":129}
2026-06-20T10:17:12.587Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":129}
2026-06-20T10:17:13.215Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3668aa77015dcde1daa388","recipientCount":1}}}
2026-06-20T10:17:13.216Z LOG [Customer SMS reply sent] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3668aa77015dcde1daa388\",\"recipientCount\":1}}"}
2026-06-20T10:17:13.223Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Towing: Thanks — where is the vehicle located right now? Please include the address, nearby cross street, or business name."}
2026-06-20T10:17:13.228Z LOG [Owner alert check] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:17:13.229Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Tow request","reason":"not enough qualified details yet"}
2026-06-20T10:17:13.229Z LOG [SMS webhook async AI continuation completed] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","providerMessageSid":"textbee:6a3668a777015dcde1daa2cf"}
2026-06-20T10:17:50.156Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:17:50.157Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 main st, ann arbor, mi at Savos","providerMessageSid":"textbee:6a3668ce77015dcde1dab009"}
2026-06-20T10:17:50.162Z LOG [Inbound SMS linked to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:17:50.223Z LOG [Incoming SMS saved to lead] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","messageId":"71af61fb-015b-427f-9550-34b7d0b4bd31","messageProviderSid":"textbee:6a3668ce77015dcde1dab009","mode":"webhook_fast_save"}
2026-06-20T10:17:50.230Z LOG [SMS cost guard disabled for testing] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:17:51.448Z LOG [Customer SMS reply attempt] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":89}
2026-06-20T10:17:51.449Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":89}
2026-06-20T10:17:52.369Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3668d177015dcde1dab0ce","recipientCount":1}}}
2026-06-20T10:17:52.369Z LOG [Customer SMS reply sent] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3668d177015dcde1dab0ce\",\"recipientCount\":1}}"}
2026-06-20T10:17:52.374Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Towing: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T10:17:52.379Z LOG [Owner alert check] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T10:17:52.381Z LOG [Owner alert sending] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T10:17:52.382Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Towing\nName: Charlie\nPhone: +14783092224\nIssue: Tow request\nAddress: 123 main st, ann arbor, m","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T10:17:52.383Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":191}
2026-06-20T10:17:52.890Z LOG [Owner alert email result] sent/accepted
2026-06-20T10:17:53.573Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3668d277015dcde1dab13d","recipientCount":1}}}
2026-06-20T10:17:53.573Z LOG [Owner SMS TextBee result] accepted
2026-06-20T10:17:53.573Z LOG [Owner alert sms result] sent/accepted
2026-06-20T10:17:53.580Z LOG [Owner alert completed] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T10:17:53.581Z LOG [SMS webhook async AI continuation completed] {"leadId":"dab83430-d712-4d5b-8b5e-544a8a9917ce","phone":"+14783092224","providerMessageSid":"textbee:6a3668ce77015dcde1dab009"}
2026-06-20T10:29:55.694Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T10:29:55.723Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T10:29:55.724Z LOG Recover Missed Call running on port 3000
2026-06-20T10:29:55.724Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T10:29:55.725Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T10:30:01.947Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:IWk35sReiO0Tc3PCFBk2TpvnjomFFT_fEPciJGlHrSYQO9ybhXAg6g","callLegId":"fee19dc6-6c92-11f1-8986-bebe5dff5faa","callSessionId":"fee19614-6c92-11f1-90b7-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T10:30:02.148Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T10:30:02.626Z LOG [Telnyx voice command ok: answer]
2026-06-20T10:30:02.627Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:30:02.641Z LOG [Missed-call recovery triggered] {"key":"fee19614-6c92-11f1-90b7-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:30:02.713Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T10:30:02.899Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:IWk35sReiO0Tc3PCFBk2TpvnjomFFT_fEPciJGlHrSYQO9ybhXAg6g","callLegId":"fee19dc6-6c92-11f1-8986-bebe5dff5faa","callSessionId":"fee19614-6c92-11f1-90b7-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T10:30:02.938Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:30:02.939Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:30:02.940Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fee19614-6c92-11f1-90b7-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:30:03.135Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T10:30:04.085Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:IWk35sReiO0Tc3PCFBk2TpvnjomFFT_fEPciJGlHrSYQO9ybhXAg6g","callLegId":"fee19dc6-6c92-11f1-8986-bebe5dff5faa","callSessionId":"fee19614-6c92-11f1-90b7-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T10:30:04.101Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:30:04.102Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:30:04.103Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fee19614-6c92-11f1-90b7-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:30:04.103Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:30:12.736Z LOG [Missed-call recovery SMS attempt] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T10:30:12.738Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-20T10:30:12.957Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366bb577015dcde1db9a99","recipientCount":1}}}
2026-06-20T10:30:12.974Z LOG [Missed-call recovery SMS sent] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366bb577015dcde1db9a99\",\"recipientCount\":1}}"}
2026-06-20T10:30:13.048Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T10:30:14.111Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:IWk35sReiO0Tc3PCFBk2TpvnjomFFT_fEPciJGlHrSYQO9ybhXAg6g","callLegId":"fee19dc6-6c92-11f1-8986-bebe5dff5faa","callSessionId":"fee19614-6c92-11f1-90b7-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T10:30:14.126Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:30:14.127Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:30:14.127Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fee19614-6c92-11f1-90b7-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:30:14.127Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:30:14.329Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T10:30:14.586Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:IWk35sReiO0Tc3PCFBk2TpvnjomFFT_fEPciJGlHrSYQO9ybhXAg6g","callLegId":"fee19dc6-6c92-11f1-8986-bebe5dff5faa","callSessionId":"fee19614-6c92-11f1-90b7-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T10:30:14.603Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:30:14.603Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:30:14.604Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"fee19614-6c92-11f1-90b7-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:30:51.620Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:30:51.623Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Need a jump start at Savos in Ann Arbor, MI","providerMessageSid":"textbee:6a366bdc77015dcde1dba22a"}
2026-06-20T10:30:51.633Z LOG [Inbound SMS linked to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T10:30:51.640Z LOG [Incoming SMS saved to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","messageId":"9657fb57-c5bd-41c6-bf65-41ded71ca039","messageProviderSid":"textbee:6a366bdc77015dcde1dba22a","mode":"webhook_fast_save"}
2026-06-20T10:30:51.655Z LOG [SMS cost guard disabled for testing] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:30:51.674Z LOG [Business-related inbound revived AI intake] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"intake","bodyPreview":"Need a jump start at Savos in Ann Arbor, MI"}
2026-06-20T10:30:53.795Z LOG [Customer SMS reply attempt] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T10:30:53.795Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T10:30:53.995Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366bde77015dcde1dba2ed","recipientCount":1}}}
2026-06-20T10:30:53.996Z LOG [Customer SMS reply sent] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366bde77015dcde1dba2ed\",\"recipientCount\":1}}"}
2026-06-20T10:30:54.025Z LOG [Owner alert check] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:30:54.026Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Jump","reason":"not enough qualified details yet"}
2026-06-20T10:30:54.028Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","providerMessageSid":"textbee:6a366bdc77015dcde1dba22a"}
2026-06-20T10:31:04.366Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:31:04.367Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a366be977015dcde1dba4b4"}
2026-06-20T10:31:04.373Z LOG [Inbound SMS linked to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:31:04.379Z LOG [Incoming SMS saved to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","messageId":"806d36f2-3a86-4e38-957c-4d722e1e3907","messageProviderSid":"textbee:6a366be977015dcde1dba4b4","mode":"webhook_fast_save"}
2026-06-20T10:31:04.397Z LOG [SMS cost guard disabled for testing] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:31:05.681Z LOG [Customer SMS reply attempt] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":145}
2026-06-20T10:31:05.682Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-20T10:31:05.995Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366bea77015dcde1dba54c","recipientCount":1}}}
2026-06-20T10:31:05.996Z LOG [Customer SMS reply sent] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366bea77015dcde1dba54c\",\"recipientCount\":1}}"}
2026-06-20T10:31:06.002Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Towing: Thanks — How urgent is this? Reply with one: Emergency / Unsafe Location, Need Help Now, Today, Scheduled Tow, Quote / Information."}
2026-06-20T10:31:06.006Z LOG [Owner alert check] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:31:06.006Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Jump","reason":"not enough qualified details yet"}
2026-06-20T10:31:06.006Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","providerMessageSid":"textbee:6a366be977015dcde1dba4b4"}
2026-06-20T10:31:25.041Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:31:25.041Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Need Help Now","providerMessageSid":"textbee:6a366bfd77015dcde1dba7b1"}
2026-06-20T10:31:25.048Z LOG [Inbound SMS linked to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:31:25.108Z LOG [Incoming SMS saved to lead] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","messageId":"2118bec4-530c-488c-b2da-692335c2a8ee","messageProviderSid":"textbee:6a366bfd77015dcde1dba7b1","mode":"webhook_fast_save"}
2026-06-20T10:31:25.115Z LOG [SMS cost guard disabled for testing] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:31:26.088Z LOG [Customer SMS reply attempt] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":89}
2026-06-20T10:31:26.088Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":89}
2026-06-20T10:31:26.267Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366bff77015dcde1dba7ed","recipientCount":1}}}
2026-06-20T10:31:26.268Z LOG [Customer SMS reply sent] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366bff77015dcde1dba7ed\",\"recipientCount\":1}}"}
2026-06-20T10:31:26.274Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Towing: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T10:31:26.277Z LOG [Owner alert check] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T10:31:26.278Z LOG [Owner alert sending] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T10:31:26.280Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Towing\nName: Chuck\nPhone: +14783092224\nIssue: Jump\nAddress: Need a jump start at Savos in Ann ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T10:31:26.281Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":170}
2026-06-20T10:31:26.493Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366bff77015dcde1dba81b","recipientCount":1}}}
2026-06-20T10:31:26.493Z LOG [Owner SMS TextBee result] accepted
2026-06-20T10:31:26.493Z LOG [Owner alert sms result] sent/accepted
2026-06-20T10:31:26.720Z LOG [Owner alert email result] sent/accepted
2026-06-20T10:31:26.728Z LOG [Owner alert completed] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T10:31:26.728Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e22ac26-1a23-4950-86b2-79300ca072c6","phone":"+14783092224","providerMessageSid":"textbee:6a366bfd77015dcde1dba7b1"}
2026-06-20T10:34:50.052Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:wC8wu_KDql_d8MQLh_mnnPFS0agMKDhgXLpMw-HpNKlGMSainj-qrA","callLegId":"aac7f0fe-6c93-11f1-8c1d-d26d51778b88","callSessionId":"aac7eb2c-6c93-11f1-939c-d26d51778b88","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T10:34:50.070Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T10:34:50.357Z LOG [Telnyx voice command ok: answer]
2026-06-20T10:34:50.357Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:34:50.357Z LOG [Missed-call recovery triggered] {"key":"aac7eb2c-6c93-11f1-939c-d26d51778b88:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:34:50.365Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T10:34:50.447Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:wC8wu_KDql_d8MQLh_mnnPFS0agMKDhgXLpMw-HpNKlGMSainj-qrA","callLegId":"aac7f0fe-6c93-11f1-8c1d-d26d51778b88","callSessionId":"aac7eb2c-6c93-11f1-939c-d26d51778b88","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T10:34:50.452Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:34:50.453Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:34:50.453Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"aac7eb2c-6c93-11f1-939c-d26d51778b88:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:34:50.530Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T10:34:50.974Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:wC8wu_KDql_d8MQLh_mnnPFS0agMKDhgXLpMw-HpNKlGMSainj-qrA","callLegId":"aac7f0fe-6c93-11f1-8c1d-d26d51778b88","callSessionId":"aac7eb2c-6c93-11f1-939c-d26d51778b88","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T10:34:50.978Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:34:50.978Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:34:50.979Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"aac7eb2c-6c93-11f1-939c-d26d51778b88:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:34:50.979Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:35:00.373Z LOG [Missed-call recovery SMS attempt] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T10:35:00.373Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-20T10:35:01.613Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:wC8wu_KDql_d8MQLh_mnnPFS0agMKDhgXLpMw-HpNKlGMSainj-qrA","callLegId":"aac7f0fe-6c93-11f1-8c1d-d26d51778b88","callSessionId":"aac7eb2c-6c93-11f1-939c-d26d51778b88","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T10:35:01.622Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:35:01.622Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:35:01.622Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"aac7eb2c-6c93-11f1-939c-d26d51778b88:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:35:01.623Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:35:01.762Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366cd677015dcde1dbd3ce","recipientCount":1}}}
2026-06-20T10:35:01.768Z LOG [Missed-call recovery SMS sent] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366cd677015dcde1dbd3ce\",\"recipientCount\":1}}"}
2026-06-20T10:35:01.788Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T10:35:01.810Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T10:35:01.901Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:wC8wu_KDql_d8MQLh_mnnPFS0agMKDhgXLpMw-HpNKlGMSainj-qrA","callLegId":"aac7f0fe-6c93-11f1-8c1d-d26d51778b88","callSessionId":"aac7eb2c-6c93-11f1-939c-d26d51778b88","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T10:35:01.913Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:35:01.914Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:35:01.914Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"aac7eb2c-6c93-11f1-939c-d26d51778b88:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:35:15.020Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:35:15.021Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"There is a strange sweet smell like maple syrup coming through my vents when I t","providerMessageSid":"textbee:6a366ce377015dcde1dbd95f"}
2026-06-20T10:35:15.030Z LOG [Inbound SMS linked to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T10:35:15.090Z LOG [Incoming SMS saved to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","messageId":"3f8fa92a-7aaf-4fa6-9f58-255e393b8621","messageProviderSid":"textbee:6a366ce377015dcde1dbd95f","mode":"webhook_fast_save"}
2026-06-20T10:35:15.097Z LOG [SMS cost guard disabled for testing] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:35:15.106Z LOG [Business-related inbound revived AI intake] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"intake","bodyPreview":"There is a strange sweet smell like maple syrup coming through my vents when I turn on the heat."}
2026-06-20T10:35:16.481Z LOG [Customer SMS reply attempt] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":67}
2026-06-20T10:35:16.481Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":67}
2026-06-20T10:35:17.129Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366ce577015dcde1dbda57","recipientCount":1}}}
2026-06-20T10:35:17.130Z LOG [Customer SMS reply sent] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366ce577015dcde1dbda57\",\"recipientCount\":1}}"}
2026-06-20T10:35:17.138Z LOG [Owner alert check] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:35:17.138Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Engine / drivability issue","reason":"not enough qualified details yet"}
2026-06-20T10:35:17.139Z LOG [SMS webhook async AI continuation completed] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","providerMessageSid":"textbee:6a366ce377015dcde1dbd95f"}
2026-06-20T10:35:28.363Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:35:28.363Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a366cf177015dcde1dbe03c"}
2026-06-20T10:35:28.368Z LOG [Inbound SMS linked to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:35:28.374Z LOG [Incoming SMS saved to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","messageId":"e44bd0ba-ce40-498f-a3e0-e7126872ffea","messageProviderSid":"textbee:6a366cf177015dcde1dbe03c","mode":"webhook_fast_save"}
2026-06-20T10:35:28.389Z LOG [SMS cost guard disabled for testing] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:35:29.620Z LOG [Customer SMS reply attempt] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":155}
2026-06-20T10:35:29.621Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":155}
2026-06-20T10:35:30.274Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366cf377015dcde1dbe159","recipientCount":1}}}
2026-06-20T10:35:30.274Z LOG [Customer SMS reply sent] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366cf377015dcde1dbe159\",\"recipientCount\":1}}"}
2026-06-20T10:35:30.279Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Auto Repair: Thanks — How urgent is this? Reply with one: Emergency / Unsafe Vehicle, Today, This Week, Routine Maintenance, Estimate / Diagnostic Quote."}
2026-06-20T10:35:30.282Z LOG [Owner alert check] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:35:30.283Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Engine / drivability issue","reason":"not enough qualified details yet"}
2026-06-20T10:35:30.283Z LOG [SMS webhook async AI continuation completed] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","providerMessageSid":"textbee:6a366cf177015dcde1dbe03c"}
2026-06-20T10:35:47.135Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:35:47.136Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"This Week","providerMessageSid":"textbee:6a366d0377015dcde1dbe77d"}
2026-06-20T10:35:47.141Z LOG [Inbound SMS linked to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:35:47.159Z LOG [Incoming SMS saved to lead] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","messageId":"4c6d3fe3-6a40-4eba-a1dc-c8312ddd116c","messageProviderSid":"textbee:6a366d0377015dcde1dbe77d","mode":"webhook_fast_save"}
2026-06-20T10:35:47.168Z LOG [SMS cost guard disabled for testing] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:35:48.315Z LOG [Customer SMS reply attempt] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":94}
2026-06-20T10:35:48.316Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-20T10:35:48.508Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366d0577015dcde1dbe7e5","recipientCount":1}}}
2026-06-20T10:35:48.509Z LOG [Customer SMS reply sent] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366d0577015dcde1dbe7e5\",\"recipientCount\":1}}"}
2026-06-20T10:35:48.516Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Auto Repair: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T10:35:48.520Z LOG [Owner alert check] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T10:35:48.520Z LOG [Owner alert sending] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T10:35:48.522Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Auto Repair\nName: This Week\nPhone: +14783092224\nIssue: Engine / drivability issue\nUrgency: Thi","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T10:35:48.522Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":241}
2026-06-20T10:35:48.705Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366d0577015dcde1dbe815","recipientCount":1}}}
2026-06-20T10:35:48.705Z LOG [Owner SMS TextBee result] accepted
2026-06-20T10:35:48.705Z LOG [Owner alert sms result] sent/accepted
2026-06-20T10:35:48.951Z LOG [Owner alert email result] sent/accepted
2026-06-20T10:35:48.957Z LOG [Owner alert completed] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T10:35:48.957Z LOG [SMS webhook async AI continuation completed] {"leadId":"602a43b5-17ad-4f17-9fb0-f08df4f691d7","phone":"+14783092224","providerMessageSid":"textbee:6a366d0377015dcde1dbe77d"}
2026-06-20T10:45:10.819Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T10:45:10.846Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T10:45:10.849Z LOG Recover Missed Call running on port 3000
2026-06-20T10:45:10.850Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T10:45:10.850Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T10:46:53.719Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:AelOBqE1x08RNtozDG9nlfbcbmHjv5OLWB7xV9d-G2rCs4mescqlVQ","callLegId":"59fbe1e2-6c95-11f1-80da-02420aefde20","callSessionId":"59fbd7ba-6c95-11f1-bb65-02420aefde20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T10:46:53.779Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T10:46:54.305Z LOG [Telnyx voice command ok: answer]
2026-06-20T10:46:54.322Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:46:54.323Z LOG [Missed-call recovery triggered] {"key":"59fbd7ba-6c95-11f1-bb65-02420aefde20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T10:46:54.393Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T10:46:54.644Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:AelOBqE1x08RNtozDG9nlfbcbmHjv5OLWB7xV9d-G2rCs4mescqlVQ","callLegId":"59fbe1e2-6c95-11f1-80da-02420aefde20","callSessionId":"59fbd7ba-6c95-11f1-bb65-02420aefde20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T10:46:54.650Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:46:54.651Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:46:54.651Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"59fbd7ba-6c95-11f1-bb65-02420aefde20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T10:46:54.802Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T10:46:56.013Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:AelOBqE1x08RNtozDG9nlfbcbmHjv5OLWB7xV9d-G2rCs4mescqlVQ","callLegId":"59fbe1e2-6c95-11f1-80da-02420aefde20","callSessionId":"59fbd7ba-6c95-11f1-bb65-02420aefde20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T10:46:56.020Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:46:56.021Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:46:56.022Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"59fbd7ba-6c95-11f1-bb65-02420aefde20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T10:46:56.023Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:47:04.404Z LOG [Missed-call recovery SMS attempt] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T10:47:04.406Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-20T10:47:04.790Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366fa977015dcde1dc9480","recipientCount":1}}}
2026-06-20T10:47:04.797Z LOG [Missed-call recovery SMS sent] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366fa977015dcde1dc9480\",\"recipientCount\":1}}"}
2026-06-20T10:47:04.808Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T10:47:06.614Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:AelOBqE1x08RNtozDG9nlfbcbmHjv5OLWB7xV9d-G2rCs4mescqlVQ","callLegId":"59fbe1e2-6c95-11f1-80da-02420aefde20","callSessionId":"59fbd7ba-6c95-11f1-bb65-02420aefde20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T10:47:06.619Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:47:06.619Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:47:06.619Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"59fbd7ba-6c95-11f1-bb65-02420aefde20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T10:47:06.619Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T10:47:06.923Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T10:47:07.098Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:AelOBqE1x08RNtozDG9nlfbcbmHjv5OLWB7xV9d-G2rCs4mescqlVQ","callLegId":"59fbe1e2-6c95-11f1-80da-02420aefde20","callSessionId":"59fbd7ba-6c95-11f1-bb65-02420aefde20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T10:47:07.106Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T10:47:07.107Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:47:07.107Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"59fbd7ba-6c95-11f1-bb65-02420aefde20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T10:47:18.427Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:47:18.429Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Do you sell commercial-grade brake fluid directly to walk-ins? I just want to bu","providerMessageSid":"textbee:6a366fb777015dcde1dc9669"}
2026-06-20T10:47:18.440Z LOG [Inbound SMS linked to lead] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T10:47:18.446Z LOG [Incoming SMS saved to lead] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","messageId":"beca685c-96db-44a5-b672-2d9595786dab","messageProviderSid":"textbee:6a366fb777015dcde1dc9669","mode":"webhook_fast_save"}
2026-06-20T10:47:18.460Z LOG [SMS cost guard disabled for testing] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:47:18.475Z LOG [Business-related inbound revived AI intake] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","status":"intake","bodyPreview":"Do you sell commercial-grade brake fluid directly to walk-ins? I just want to buy the bottle."}
2026-06-20T10:47:19.625Z LOG [Customer SMS reply attempt] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":122}
2026-06-20T10:47:19.625Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":122}
2026-06-20T10:47:19.872Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a366fb877015dcde1dc969d","recipientCount":1}}}
2026-06-20T10:47:19.873Z LOG [Customer SMS reply sent] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a366fb877015dcde1dc969d\",\"recipientCount\":1}}"}
2026-06-20T10:47:19.890Z LOG [Owner alert check] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T10:47:19.894Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-20T10:47:19.895Z LOG [SMS webhook async AI continuation completed] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","providerMessageSid":"textbee:6a366fb777015dcde1dc9669"}
2026-06-20T10:47:39.521Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T10:47:39.522Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a366fcc77015dcde1dc9891"}
2026-06-20T10:47:39.531Z LOG [Inbound SMS linked to lead] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T10:47:39.591Z LOG [Incoming SMS saved to lead] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","messageId":"a59fd976-eeca-4673-8de2-eff29c9b6e5d","messageProviderSid":"textbee:6a366fcc77015dcde1dc9891","mode":"webhook_fast_save"}
2026-06-20T10:47:39.601Z LOG [SMS cost guard disabled for testing] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T10:47:39.620Z LOG [Off-scope unrelated inbound saved with no automated reply] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","businessType":"auto","bodyPreview":"Chuck"}
2026-06-20T10:47:39.620Z LOG [SMS webhook async AI continuation completed] {"leadId":"f675ad57-219b-468c-8349-65d1c9fe58da","phone":"+14783092224","providerMessageSid":"textbee:6a366fcc77015dcde1dc9891"}
2026-06-20T10:55:18.334Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T10:55:18.406Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T10:55:18.408Z LOG Recover Missed Call running on port 3000
2026-06-20T10:55:18.409Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T10:55:18.409Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T11:01:31.404Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T11:01:31.498Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T11:01:31.501Z LOG Recover Missed Call running on port 3000
2026-06-20T11:01:31.501Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T11:01:31.502Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T11:05:39.283Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T11:05:39.304Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T11:05:39.305Z LOG Recover Missed Call running on port 3000
2026-06-20T11:05:39.305Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T11:05:39.306Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T16:22:17.459Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17343092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:MSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw","callLegId":"34a6d134-6cc4-11f1-9a88-02420aef3620","callSessionId":"34a6cb80-6cc4-11f1-8d41-02420aef3620","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T16:22:17.940Z LOG [Voice routing decision] {"from":"+17343092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":false,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T16:22:18.568Z LOG [Telnyx voice command ok: answer]
2026-06-20T16:22:18.568Z WARN [Text every inbound call skipped: invalid/unusable caller ID] {"from":"+17343092224","to":"+17342647770"}
2026-06-20T16:22:18.872Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:MSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw","callLegId":"34a6d134-6cc4-11f1-9a88-02420aef3620","callSessionId":"34a6cb80-6cc4-11f1-8d41-02420aef3620","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T16:22:18.879Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.answered","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-20T16:22:19.036Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T16:22:19.898Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:MSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw","callLegId":"34a6d134-6cc4-11f1-9a88-02420aef3620","callSessionId":"34a6cb80-6cc4-11f1-8d41-02420aef3620","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T16:22:19.904Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.started","phone":"+17343092224","from":"","to":""}
2026-06-20T16:22:19.905Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T16:22:27.915Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:MSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw","callLegId":"34a6d134-6cc4-11f1-9a88-02420aef3620","callSessionId":"34a6cb80-6cc4-11f1-8d41-02420aef3620","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T16:22:27.924Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.ended","phone":"+17343092224","from":"","to":""}
2026-06-20T16:22:27.925Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T16:22:28.033Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:MSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw","callLegId":"34a6d134-6cc4-11f1-9a88-02420aef3620","callSessionId":"34a6cb80-6cc4-11f1-8d41-02420aef3620","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T16:22:28.039Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.hangup","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-20T16:22:28.058Z ERROR [Telnyx API error] {"path":"/calls/v3%3AMSi_VnmnZMsUvDDT_jx42TQF2mzuXfrKwMIghJCziMGF51XhyJwVIw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-20T16:22:28.060Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-20T17:30:38.437Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17343092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:5ZsLDGMtdlu80eRB6bDk8ap0Y7Ae7Rx9gpw8IxLdXvkRdjGD6dPtYw","callLegId":"c1056e0c-6ccd-11f1-a260-da02a6c3701e","callSessionId":"c1055fd4-6ccd-11f1-b5ae-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T17:30:38.449Z LOG [Voice routing decision] {"from":"+17343092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":false,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T17:30:38.730Z LOG [Telnyx voice command ok: answer]
2026-06-20T17:30:38.731Z WARN [Text every inbound call skipped: invalid/unusable caller ID] {"from":"+17343092224","to":"+17342647770"}
2026-06-20T17:30:39.041Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:5ZsLDGMtdlu80eRB6bDk8ap0Y7Ae7Rx9gpw8IxLdXvkRdjGD6dPtYw","callLegId":"c1056e0c-6ccd-11f1-a260-da02a6c3701e","callSessionId":"c1055fd4-6ccd-11f1-b5ae-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T17:30:39.048Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.answered","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-20T17:30:39.180Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T17:30:39.613Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:5ZsLDGMtdlu80eRB6bDk8ap0Y7Ae7Rx9gpw8IxLdXvkRdjGD6dPtYw","callLegId":"c1056e0c-6ccd-11f1-a260-da02a6c3701e","callSessionId":"c1055fd4-6ccd-11f1-b5ae-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T17:30:39.624Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.started","phone":"+17343092224","from":"","to":""}
2026-06-20T17:30:39.624Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T17:30:50.284Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:5ZsLDGMtdlu80eRB6bDk8ap0Y7Ae7Rx9gpw8IxLdXvkRdjGD6dPtYw","callLegId":"c1056e0c-6ccd-11f1-a260-da02a6c3701e","callSessionId":"c1055fd4-6ccd-11f1-b5ae-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T17:30:50.292Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.speak.ended","phone":"+17343092224","from":"","to":""}
2026-06-20T17:30:50.292Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T17:30:50.462Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T17:30:50.718Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17343092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:5ZsLDGMtdlu80eRB6bDk8ap0Y7Ae7Rx9gpw8IxLdXvkRdjGD6dPtYw","callLegId":"c1056e0c-6ccd-11f1-a260-da02a6c3701e","callSessionId":"c1055fd4-6ccd-11f1-b5ae-da02a6c3701e","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T17:30:50.726Z WARN [Text every inbound call fallback skipped: invalid/unusable caller ID] {"eventType":"call.hangup","phone":"+17343092224","from":"+17343092224","to":"+17342647770"}
2026-06-20T17:31:43.689Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Z9aiZYTDUiEheBxhBRgciRIbL1LehDtNc8FJ2KZtoEv80LnCoCfqPw","callLegId":"e7eee246-6ccd-11f1-9c8b-aa388819d4f4","callSessionId":"e7eed152-6ccd-11f1-a787-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T17:31:43.717Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T17:31:44.125Z LOG [Telnyx voice command ok: answer]
2026-06-20T17:31:44.125Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T17:31:44.126Z LOG [Missed-call recovery triggered] {"key":"e7eed152-6ccd-11f1-a787-aa388819d4f4:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T17:31:44.136Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T17:31:44.282Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Z9aiZYTDUiEheBxhBRgciRIbL1LehDtNc8FJ2KZtoEv80LnCoCfqPw","callLegId":"e7eee246-6ccd-11f1-9c8b-aa388819d4f4","callSessionId":"e7eed152-6ccd-11f1-a787-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T17:31:44.288Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-20T17:31:44.289Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T17:31:44.289Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7eed152-6ccd-11f1-a787-aa388819d4f4:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T17:31:44.448Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T17:31:44.886Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Z9aiZYTDUiEheBxhBRgciRIbL1LehDtNc8FJ2KZtoEv80LnCoCfqPw","callLegId":"e7eee246-6ccd-11f1-9c8b-aa388819d4f4","callSessionId":"e7eed152-6ccd-11f1-a787-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T17:31:44.893Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-20T17:31:44.893Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T17:31:44.893Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7eed152-6ccd-11f1-a787-aa388819d4f4:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T17:31:44.893Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T17:31:54.147Z LOG [Missed-call recovery SMS attempt] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T17:31:54.148Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-20T17:31:54.359Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36ce8b77015dcde1f8c5fe","recipientCount":1}}}
2026-06-20T17:31:54.368Z LOG [Missed-call recovery SMS sent] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36ce8b77015dcde1f8c5fe\",\"recipientCount\":1}}"}
2026-06-20T17:31:54.384Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T17:31:55.520Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Z9aiZYTDUiEheBxhBRgciRIbL1LehDtNc8FJ2KZtoEv80LnCoCfqPw","callLegId":"e7eee246-6ccd-11f1-9c8b-aa388819d4f4","callSessionId":"e7eed152-6ccd-11f1-a787-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T17:31:55.534Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-20T17:31:55.534Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T17:31:55.534Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7eed152-6ccd-11f1-a787-aa388819d4f4:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T17:31:55.534Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T17:31:55.737Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T17:31:55.973Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Z9aiZYTDUiEheBxhBRgciRIbL1LehDtNc8FJ2KZtoEv80LnCoCfqPw","callLegId":"e7eee246-6ccd-11f1-9c8b-aa388819d4f4","callSessionId":"e7eed152-6ccd-11f1-a787-aa388819d4f4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T17:31:55.987Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-20T17:31:55.988Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T17:31:55.988Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e7eed152-6ccd-11f1-a787-aa388819d4f4:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T17:32:44.182Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T17:32:44.184Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Need to set up oil change","providerMessageSid":"textbee:6a36cebc77015dcde1f8d1fe"}
2026-06-20T17:32:44.259Z LOG [Inbound SMS linked to lead] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T17:32:44.264Z LOG [Incoming SMS saved to lead] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","messageId":"1ce03b9e-8e6b-4f33-ae25-074a4dc6dac8","messageProviderSid":"textbee:6a36cebc77015dcde1f8d1fe","mode":"webhook_fast_save"}
2026-06-20T17:32:44.280Z LOG [SMS cost guard disabled for testing] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-20T17:32:44.299Z LOG [Business-related inbound revived AI intake] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","status":"intake","bodyPreview":"Need to set up oil change"}
2026-06-20T17:32:46.220Z LOG [Customer SMS reply attempt] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":67}
2026-06-20T17:32:46.221Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":67}
2026-06-20T17:32:46.504Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36cebf77015dcde1f8d259","recipientCount":1}}}
2026-06-20T17:32:46.504Z LOG [Customer SMS reply sent] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36cebf77015dcde1f8d259\",\"recipientCount\":1}}"}
2026-06-20T17:32:46.524Z LOG [Owner alert check] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T17:32:46.526Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","status":"intake","qualified":0,"serviceType":"Maintenance / inspection","reason":"not enough qualified details yet"}
2026-06-20T17:32:46.527Z LOG [SMS webhook async AI continuation completed] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","providerMessageSid":"textbee:6a36cebc77015dcde1f8d1fe"}
2026-06-20T17:33:01.367Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T17:33:01.368Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a36cecd77015dcde1f8d4d0"}
2026-06-20T17:33:01.382Z LOG [Inbound SMS linked to lead] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T17:33:01.397Z LOG [Incoming SMS saved to lead] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","messageId":"ffc3ecae-1cd1-4cbd-8467-015e4db18bc5","messageProviderSid":"textbee:6a36cecd77015dcde1f8d4d0","mode":"webhook_fast_save"}
2026-06-20T17:33:01.473Z LOG [SMS cost guard disabled for testing] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-20T17:33:01.501Z LOG [Customer SMS reply attempt] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","context":"admin_callback_name_captured_reply","provider":"textbee","messageLength":85}
2026-06-20T17:33:01.501Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":85}
2026-06-20T17:33:01.919Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36cece77015dcde1f8d53c","recipientCount":1}}}
2026-06-20T17:33:01.919Z LOG [Customer SMS reply sent] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","context":"admin_callback_name_captured_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a36cece77015dcde1f8d53c\",\"recipientCount\":1}}"}
2026-06-20T17:33:01.942Z LOG [Owner lead-update SMS check] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":0}
2026-06-20T17:33:01.944Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Auto Repair\nName: Chuck\nPhone: +13133141123\nIssue: Maintenance / inspection\nNew message: Chuck\nStatus","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T17:33:01.945Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":134}
2026-06-20T17:33:02.811Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a36cecf77015dcde1f8d579","recipientCount":1}}}
2026-06-20T17:33:02.811Z LOG [Owner SMS TextBee result] accepted
2026-06-20T17:33:02.811Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-20T17:33:02.811Z LOG [Administrative callback name captured] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","customerName":"Chuck"}
2026-06-20T17:33:02.813Z LOG [SMS webhook async AI continuation completed] {"leadId":"463856a6-54c8-4f4c-999a-067d30068cf1","phone":"+13133141123","providerMessageSid":"textbee:6a36cecd77015dcde1f8d4d0"}
2026-06-20T18:05:39.483Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+13133141123","body":"Just checking in — do you still need help with Maintenance / inspection? Reply with your address/city and preferred time, and Metro Auto Repair can help with the next step. Reply STOP to opt out."}
2026-06-20T20:05:39.518Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+13133141123","body":"Metro Auto Repair here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-20T22:59:05.931Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:6udt-stKYFqmnygQ4HONo-YuAMtGxsjpAYfjesgx-er_B5xRa-AjCA","callLegId":"a39a3478-6cfb-11f1-9852-02420aef3720","callSessionId":"a39a3004-6cfb-11f1-8385-02420aef3720","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T22:59:06.010Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T22:59:06.496Z LOG [Telnyx voice command ok: answer]
2026-06-20T22:59:06.496Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T22:59:06.497Z LOG [Missed-call recovery triggered] {"key":"a39a3004-6cfb-11f1-8385-02420aef3720:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T22:59:06.567Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T22:59:06.701Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:6udt-stKYFqmnygQ4HONo-YuAMtGxsjpAYfjesgx-er_B5xRa-AjCA","callLegId":"a39a3478-6cfb-11f1-9852-02420aef3720","callSessionId":"a39a3004-6cfb-11f1-8385-02420aef3720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T22:59:06.706Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T22:59:06.706Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T22:59:06.706Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a39a3004-6cfb-11f1-8385-02420aef3720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T22:59:06.877Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T22:59:08.032Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:6udt-stKYFqmnygQ4HONo-YuAMtGxsjpAYfjesgx-er_B5xRa-AjCA","callLegId":"a39a3478-6cfb-11f1-9852-02420aef3720","callSessionId":"a39a3004-6cfb-11f1-8385-02420aef3720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T22:59:08.037Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T22:59:08.037Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T22:59:08.037Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a39a3004-6cfb-11f1-8385-02420aef3720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T22:59:08.037Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T22:59:16.573Z LOG [Missed-call recovery SMS attempt] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T22:59:16.574Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-20T22:59:16.836Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a371b4577015dcde10d52c6","recipientCount":1}}}
2026-06-20T22:59:16.840Z LOG [Missed-call recovery SMS sent] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a371b4577015dcde10d52c6\",\"recipientCount\":1}}"}
2026-06-20T22:59:16.846Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T22:59:18.631Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:6udt-stKYFqmnygQ4HONo-YuAMtGxsjpAYfjesgx-er_B5xRa-AjCA","callLegId":"a39a3478-6cfb-11f1-9852-02420aef3720","callSessionId":"a39a3004-6cfb-11f1-8385-02420aef3720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T22:59:18.636Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T22:59:18.637Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T22:59:18.637Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a39a3004-6cfb-11f1-8385-02420aef3720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T22:59:18.637Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T22:59:18.867Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T22:59:19.032Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:6udt-stKYFqmnygQ4HONo-YuAMtGxsjpAYfjesgx-er_B5xRa-AjCA","callLegId":"a39a3478-6cfb-11f1-9852-02420aef3720","callSessionId":"a39a3004-6cfb-11f1-8385-02420aef3720","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T22:59:19.039Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T22:59:19.040Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T22:59:19.040Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a39a3004-6cfb-11f1-8385-02420aef3720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T23:00:17.626Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:00:17.626Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"We have ant mounds near our garage","providerMessageSid":"textbee:6a371b7b77015dcde10d8444"}
2026-06-20T23:00:17.632Z LOG [Inbound SMS linked to lead] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T23:00:17.637Z LOG [Incoming SMS saved to lead] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","messageId":"95a05ac0-b104-4c95-9c8d-0ecc028a5ace","messageProviderSid":"textbee:6a371b7b77015dcde10d8444","mode":"webhook_fast_save"}
2026-06-20T23:00:17.644Z LOG [SMS cost guard disabled for testing] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:00:17.656Z LOG [Business-related inbound revived AI intake] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","status":"intake","bodyPreview":"We have ant mounds near our garage"}
2026-06-20T23:00:20.148Z LOG [Customer SMS reply attempt] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-20T23:00:20.148Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-20T23:00:36.175Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a371b9377015dcde10d9d75","recipientCount":1}}}
2026-06-20T23:00:36.175Z LOG [Customer SMS reply sent] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a371b9377015dcde10d9d75\",\"recipientCount\":1}}"}
2026-06-20T23:00:36.189Z LOG [Owner alert check] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T23:00:36.189Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-20T23:00:36.190Z LOG [SMS webhook async AI continuation completed] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","providerMessageSid":"textbee:6a371b7b77015dcde10d8444"}
2026-06-20T23:01:07.697Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:01:07.697Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a371bb077015dcde10db9a3"}
2026-06-20T23:01:07.711Z LOG [Inbound SMS linked to lead] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T23:01:07.780Z LOG [Incoming SMS saved to lead] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","messageId":"052c1973-e889-403d-b330-859e453986e0","messageProviderSid":"textbee:6a371bb077015dcde10db9a3","mode":"webhook_fast_save"}
2026-06-20T23:01:07.788Z LOG [SMS cost guard disabled for testing] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:01:07.803Z LOG [Customer SMS reply attempt] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","context":"admin_callback_name_captured_reply","provider":"textbee","messageLength":86}
2026-06-20T23:01:07.803Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":86}
2026-06-20T23:01:12.013Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a371bb777015dcde10dc126","recipientCount":1}}}
2026-06-20T23:01:12.014Z LOG [Customer SMS reply sent] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","context":"admin_callback_name_captured_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a371bb777015dcde10dc126\",\"recipientCount\":1}}"}
2026-06-20T23:01:12.021Z LOG [Owner lead-update SMS check] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":0}
2026-06-20T23:01:12.022Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Ants\nNew message: Chuck\nStatus: needs_review","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T23:01:12.022Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":115}
2026-06-20T23:01:17.415Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a371bbc77015dcde10dc58f","recipientCount":1}}}
2026-06-20T23:01:17.416Z LOG [Owner SMS TextBee result] accepted
2026-06-20T23:01:17.416Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-20T23:01:17.416Z LOG [Administrative callback name captured] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","customerName":"Chuck"}
2026-06-20T23:01:17.417Z LOG [SMS webhook async AI continuation completed] {"leadId":"1ca5942d-d2ab-4d2f-9751-8ac89a0b2982","phone":"+14783092224","providerMessageSid":"textbee:6a371bb077015dcde10db9a3"}
2026-06-20T23:34:55.206Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-20T23:34:55.302Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-20T23:34:55.304Z LOG Recover Missed Call running on port 3000
2026-06-20T23:34:55.304Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-20T23:34:55.305Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-20T23:35:57.080Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:pPrJvxYzWRF2iASppk5JQSLNTLyFVVmu21Rdq_cyOXRTMqbXqcuuxA","callLegId":"c9bb8cd8-6d00-11f1-9726-02420aef8ea1","callSessionId":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-20T23:35:57.302Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-20T23:35:57.502Z LOG [Telnyx voice command ok: answer]
2026-06-20T23:35:57.502Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T23:35:57.503Z LOG [Missed-call recovery triggered] {"key":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-20T23:35:57.518Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-20T23:35:57.611Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:pPrJvxYzWRF2iASppk5JQSLNTLyFVVmu21Rdq_cyOXRTMqbXqcuuxA","callLegId":"c9bb8cd8-6d00-11f1-9726-02420aef8ea1","callSessionId":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-20T23:35:57.620Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T23:35:57.621Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T23:35:57.621Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-20T23:35:57.676Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-20T23:35:57.901Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:pPrJvxYzWRF2iASppk5JQSLNTLyFVVmu21Rdq_cyOXRTMqbXqcuuxA","callLegId":"c9bb8cd8-6d00-11f1-9726-02420aef8ea1","callSessionId":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-20T23:35:57.908Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T23:35:57.909Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T23:35:57.909Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-20T23:35:57.909Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T23:36:07.525Z LOG [Missed-call recovery SMS attempt] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-20T23:36:07.526Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-20T23:36:07.851Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3723e877015dcde1101218","recipientCount":1}}}
2026-06-20T23:36:07.856Z LOG [Missed-call recovery SMS sent] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3723e877015dcde1101218\",\"recipientCount\":1}}"}
2026-06-20T23:36:07.870Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-20T23:36:08.443Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:pPrJvxYzWRF2iASppk5JQSLNTLyFVVmu21Rdq_cyOXRTMqbXqcuuxA","callLegId":"c9bb8cd8-6d00-11f1-9726-02420aef8ea1","callSessionId":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-20T23:36:08.448Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T23:36:08.448Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T23:36:08.449Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-20T23:36:08.449Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-20T23:36:08.582Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-20T23:36:08.674Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:pPrJvxYzWRF2iASppk5JQSLNTLyFVVmu21Rdq_cyOXRTMqbXqcuuxA","callLegId":"c9bb8cd8-6d00-11f1-9726-02420aef8ea1","callSessionId":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-20T23:36:08.680Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-20T23:36:08.681Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T23:36:08.681Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c9bb83d2-6d00-11f1-8d03-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-20T23:36:54.704Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:36:54.706Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"we have ant mounds near the garage","providerMessageSid":"textbee:6a37241777015dcde110168d"}
2026-06-20T23:36:54.713Z LOG [Inbound SMS linked to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-20T23:36:54.720Z LOG [Incoming SMS saved to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","messageId":"d80cc220-459b-4dc1-9737-85add1e5a526","messageProviderSid":"textbee:6a37241777015dcde110168d","mode":"webhook_fast_save"}
2026-06-20T23:36:54.736Z LOG [SMS cost guard disabled for testing] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:36:54.751Z LOG [Business-related inbound revived AI intake] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","bodyPreview":"we have ant mounds near the garage"}
2026-06-20T23:36:56.812Z LOG [Customer SMS reply attempt] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-20T23:36:56.813Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-20T23:36:57.526Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37241a77015dcde1101702","recipientCount":1}}}
2026-06-20T23:36:57.526Z LOG [Customer SMS reply sent] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37241a77015dcde1101702\",\"recipientCount\":1}}"}
2026-06-20T23:36:57.537Z LOG [Owner alert check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T23:36:57.537Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-20T23:36:57.538Z LOG [SMS webhook async AI continuation completed] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","providerMessageSid":"textbee:6a37241777015dcde110168d"}
2026-06-20T23:37:08.908Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:37:08.908Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a37242577015dcde11018f9"}
2026-06-20T23:37:08.914Z LOG [Inbound SMS linked to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T23:37:08.976Z LOG [Incoming SMS saved to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","messageId":"c74dba61-3e83-4f5e-abbf-c2ae5515eac4","messageProviderSid":"textbee:6a37242577015dcde11018f9","mode":"webhook_fast_save"}
2026-06-20T23:37:08.985Z LOG [SMS cost guard disabled for testing] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:37:10.309Z LOG [Customer SMS reply attempt] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-20T23:37:10.309Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-20T23:37:10.519Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37242777015dcde1101951","recipientCount":1}}}
2026-06-20T23:37:10.520Z LOG [Customer SMS reply sent] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37242777015dcde1101951\",\"recipientCount\":1}}"}
2026-06-20T23:37:10.526Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-20T23:37:10.530Z LOG [Owner alert check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T23:37:10.531Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-20T23:37:10.531Z LOG [SMS webhook async AI continuation completed] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","providerMessageSid":"textbee:6a37242577015dcde11018f9"}
2026-06-20T23:37:43.346Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:37:43.346Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33578 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a37244877015dcde1101c0a"}
2026-06-20T23:37:43.353Z LOG [Inbound SMS linked to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T23:37:43.366Z LOG [Incoming SMS saved to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","messageId":"5b8f6629-4c1d-4b24-ba6a-826c3f79ee81","messageProviderSid":"textbee:6a37244877015dcde1101c0a","mode":"webhook_fast_save"}
2026-06-20T23:37:43.373Z LOG [SMS cost guard disabled for testing] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:37:44.716Z LOG [Service area check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-20T23:37:44.719Z LOG [Customer SMS reply attempt] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":74}
2026-06-20T23:37:44.719Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-20T23:37:45.001Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37244977015dcde1101c6e","recipientCount":1}}}
2026-06-20T23:37:45.001Z LOG [Customer SMS reply sent] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37244977015dcde1101c6e\",\"recipientCount\":1}}"}
2026-06-20T23:37:45.009Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-20T23:37:45.012Z LOG [Owner alert check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-20T23:37:45.013Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-20T23:37:45.013Z LOG [SMS webhook async AI continuation completed] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","providerMessageSid":"textbee:6a37244877015dcde1101c0a"}
2026-06-20T23:38:04.320Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-20T23:38:04.321Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Residential","providerMessageSid":"textbee:6a37245d77015dcde1101e22"}
2026-06-20T23:38:04.328Z LOG [Inbound SMS linked to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-20T23:38:04.333Z LOG [Incoming SMS saved to lead] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","messageId":"d25896b7-c64b-4d6b-b4c4-8b4943b1c717","messageProviderSid":"textbee:6a37245d77015dcde1101e22","mode":"webhook_fast_save"}
2026-06-20T23:38:04.341Z LOG [SMS cost guard disabled for testing] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-20T23:38:06.357Z LOG [Service area check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-20T23:38:06.373Z LOG [Customer SMS reply attempt] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-20T23:38:06.373Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-20T23:38:06.766Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37245f77015dcde1101e6f","recipientCount":1}}}
2026-06-20T23:38:06.766Z LOG [Customer SMS reply sent] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37245f77015dcde1101e6f\",\"recipientCount\":1}}"}
2026-06-20T23:38:06.775Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-20T23:38:06.778Z LOG [Owner alert check] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-20T23:38:06.779Z LOG [Owner alert sending] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-20T23:38:06.780Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Ants\nAddress: 33578 Unicorn Ct, Westland, ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-20T23:38:06.781Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":233}
2026-06-20T23:38:06.997Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37245f77015dcde1101ea5","recipientCount":1}}}
2026-06-20T23:38:06.997Z LOG [Owner SMS TextBee result] accepted
2026-06-20T23:38:06.997Z LOG [Owner alert sms result] sent/accepted
2026-06-20T23:38:07.259Z LOG [Owner alert email result] sent/accepted
2026-06-20T23:38:07.266Z LOG [Owner alert completed] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-20T23:38:07.267Z LOG [SMS webhook async AI continuation completed] {"leadId":"813d831c-695e-4da9-a047-05ef48f17614","phone":"+14783092224","providerMessageSid":"textbee:6a37245d77015dcde1101e22"}
2026-06-21T00:01:29.703Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T00:01:29.788Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T00:01:29.790Z LOG Recover Missed Call running on port 3000
2026-06-21T00:01:29.791Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T00:01:29.791Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T00:02:33.977Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:tqCCYOJ_83Qtmbzn-UMPuIfgroTQZ5PvdobZaCchhN7TDBRrevM8lA","callLegId":"81360ba6-6d04-11f1-80ef-02420aef24a1","callSessionId":"8136025a-6d04-11f1-bdc6-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:02:34.088Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:02:34.525Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:02:34.526Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:02:34.527Z LOG [Missed-call recovery triggered] {"key":"8136025a-6d04-11f1-bdc6-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:02:34.553Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-21T00:02:34.960Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:tqCCYOJ_83Qtmbzn-UMPuIfgroTQZ5PvdobZaCchhN7TDBRrevM8lA","callLegId":"81360ba6-6d04-11f1-80ef-02420aef24a1","callSessionId":"8136025a-6d04-11f1-bdc6-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:02:34.966Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:02:34.966Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:02:34.967Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8136025a-6d04-11f1-bdc6-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:02:35.099Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:02:36.217Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:tqCCYOJ_83Qtmbzn-UMPuIfgroTQZ5PvdobZaCchhN7TDBRrevM8lA","callLegId":"81360ba6-6d04-11f1-80ef-02420aef24a1","callSessionId":"8136025a-6d04-11f1-bdc6-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:02:36.224Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:02:36.225Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:02:36.225Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8136025a-6d04-11f1-bdc6-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:02:36.225Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:02:44.564Z LOG [Missed-call recovery SMS attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:02:44.565Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:02:45.172Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a2677015dcde111c9c2","recipientCount":1}}}
2026-06-21T00:02:45.177Z LOG [Missed-call recovery SMS sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a2677015dcde111c9c2\",\"recipientCount\":1}}"}
2026-06-21T00:02:45.200Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:02:46.820Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:tqCCYOJ_83Qtmbzn-UMPuIfgroTQZ5PvdobZaCchhN7TDBRrevM8lA","callLegId":"81360ba6-6d04-11f1-80ef-02420aef24a1","callSessionId":"8136025a-6d04-11f1-bdc6-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:02:46.826Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:02:46.827Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:02:46.827Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8136025a-6d04-11f1-bdc6-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:02:46.827Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:02:47.108Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:02:47.400Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:tqCCYOJ_83Qtmbzn-UMPuIfgroTQZ5PvdobZaCchhN7TDBRrevM8lA","callLegId":"81360ba6-6d04-11f1-80ef-02420aef24a1","callSessionId":"8136025a-6d04-11f1-bdc6-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:02:47.408Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:02:47.409Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:02:47.409Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8136025a-6d04-11f1-bdc6-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:03:13.743Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:03:13.745Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Ants and bees around the house","providerMessageSid":"textbee:6a372a4277015dcde111cff5"}
2026-06-21T00:03:13.752Z LOG [Inbound SMS linked to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:03:13.767Z LOG [Incoming SMS saved to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","messageId":"fec53a5a-7ad6-4b99-876d-33e58ace9338","messageProviderSid":"textbee:6a372a4277015dcde111cff5","mode":"webhook_fast_save"}
2026-06-21T00:03:13.779Z LOG [SMS cost guard disabled for testing] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:03:13.794Z LOG [Business-related inbound revived AI intake] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","bodyPreview":"Ants and bees around the house"}
2026-06-21T00:03:15.500Z LOG [Customer SMS reply attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-21T00:03:15.500Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-21T00:03:15.795Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a4477015dcde111d0e9","recipientCount":1}}}
2026-06-21T00:03:15.795Z LOG [Customer SMS reply sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a4477015dcde111d0e9\",\"recipientCount\":1}}"}
2026-06-21T00:03:15.805Z LOG [Owner alert check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:03:15.806Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-21T00:03:15.807Z LOG [SMS webhook async AI continuation completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","providerMessageSid":"textbee:6a372a4277015dcde111cff5"}
2026-06-21T00:03:25.255Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:03:25.256Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a372a4e77015dcde111d344"}
2026-06-21T00:03:25.262Z LOG [Inbound SMS linked to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:03:25.275Z LOG [Incoming SMS saved to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","messageId":"f3a6e548-194c-47ab-91d7-d224c9bf5042","messageProviderSid":"textbee:6a372a4e77015dcde111d344","mode":"webhook_fast_save"}
2026-06-21T00:03:25.282Z LOG [SMS cost guard disabled for testing] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:03:26.566Z LOG [Customer SMS reply attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-21T00:03:26.566Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T00:03:26.951Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a4f77015dcde111d41a","recipientCount":1}}}
2026-06-21T00:03:26.952Z LOG [Customer SMS reply sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a4f77015dcde111d41a\",\"recipientCount\":1}}"}
2026-06-21T00:03:26.958Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T00:03:26.961Z LOG [Owner alert check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:03:26.962Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-21T00:03:26.962Z LOG [SMS webhook async AI continuation completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","providerMessageSid":"textbee:6a372a4e77015dcde111d344"}
2026-06-21T00:03:43.421Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:03:43.421Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 Main St, Ann Arbor, MI","providerMessageSid":"textbee:6a372a6077015dcde111d725"}
2026-06-21T00:03:43.429Z LOG [Inbound SMS linked to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:03:43.441Z LOG [Incoming SMS saved to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","messageId":"d1c2e193-a42b-4b49-be53-e1a13db45c2e","messageProviderSid":"textbee:6a372a6077015dcde111d725","mode":"webhook_fast_save"}
2026-06-21T00:03:43.517Z LOG [SMS cost guard disabled for testing] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:03:45.398Z LOG [Service area check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-21T00:03:45.401Z LOG [Customer SMS reply attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":74}
2026-06-21T00:03:45.401Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-21T00:03:45.662Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a6277015dcde111d805","recipientCount":1}}}
2026-06-21T00:03:45.662Z LOG [Customer SMS reply sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a6277015dcde111d805\",\"recipientCount\":1}}"}
2026-06-21T00:03:45.672Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-21T00:03:45.679Z LOG [Owner alert check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:03:45.680Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-21T00:03:45.680Z LOG [SMS webhook async AI continuation completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","providerMessageSid":"textbee:6a372a6077015dcde111d725"}
2026-06-21T00:04:02.704Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:04:02.705Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"residential","providerMessageSid":"textbee:6a372a7377015dcde111dade"}
2026-06-21T00:04:02.712Z LOG [Inbound SMS linked to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:04:02.719Z LOG [Incoming SMS saved to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","messageId":"3db68571-8a21-4613-a4d3-d1f2bebdc8db","messageProviderSid":"textbee:6a372a7377015dcde111dade","mode":"webhook_fast_save"}
2026-06-21T00:04:02.735Z LOG [SMS cost guard disabled for testing] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:04:03.926Z LOG [Service area check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-21T00:04:03.930Z LOG [Customer SMS reply attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":150}
2026-06-21T00:04:03.930Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-21T00:04:04.143Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a7477015dcde111dbc7","recipientCount":1}}}
2026-06-21T00:04:04.143Z LOG [Customer SMS reply sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a7477015dcde111dbc7\",\"recipientCount\":1}}"}
2026-06-21T00:04:04.154Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-21T00:04:04.157Z LOG [Owner alert check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:04:04.158Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-21T00:04:04.158Z LOG [SMS webhook async AI continuation completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","providerMessageSid":"textbee:6a372a7377015dcde111dade"}
2026-06-21T00:04:30.195Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:04:30.195Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Today","providerMessageSid":"textbee:6a372a8f77015dcde111eba1"}
2026-06-21T00:04:30.202Z LOG [Inbound SMS linked to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:04:30.208Z LOG [Incoming SMS saved to lead] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","messageId":"7d7f2ecc-6808-4563-993a-adf60e2abaef","messageProviderSid":"textbee:6a372a8f77015dcde111eba1","mode":"webhook_fast_save"}
2026-06-21T00:04:30.223Z LOG [SMS cost guard disabled for testing] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:04:31.872Z LOG [Service area check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-21T00:04:31.880Z LOG [Customer SMS reply attempt] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-21T00:04:31.880Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-21T00:04:32.100Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a9077015dcde111ec70","recipientCount":1}}}
2026-06-21T00:04:32.101Z LOG [Customer SMS reply sent] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372a9077015dcde111ec70\",\"recipientCount\":1}}"}
2026-06-21T00:04:32.113Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-21T00:04:32.118Z LOG [Owner alert check] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-21T00:04:32.120Z LOG [Owner alert sending] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-21T00:04:32.121Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Ants\nAddress: 123 Main St, Ann Arbor, MI\nU","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-21T00:04:32.122Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":236}
2026-06-21T00:04:32.344Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372a9177015dcde111ec9e","recipientCount":1}}}
2026-06-21T00:04:32.344Z LOG [Owner SMS TextBee result] accepted
2026-06-21T00:04:32.344Z LOG [Owner alert sms result] sent/accepted
2026-06-21T00:04:32.629Z LOG [Owner alert email result] sent/accepted
2026-06-21T00:04:32.639Z LOG [Owner alert completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-21T00:04:32.640Z LOG [SMS webhook async AI continuation completed] {"leadId":"b6b7495b-5e71-41e7-ba45-c52502a93327","phone":"+14783092224","providerMessageSid":"textbee:6a372a8f77015dcde111eba1"}
2026-06-21T00:07:17.182Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:5c6JuBrNyh4NiR5k2lpUBTXjePto_GUedeat5V7NkGPVrjVIxX14Vg","callLegId":"2a126012-6d05-11f1-b9b7-02420aef2220","callSessionId":"2a125310-6d05-11f1-b860-02420aef2220","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:07:17.217Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:07:17.621Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:07:17.621Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:07:17.621Z LOG [Missed-call recovery triggered] {"key":"2a125310-6d05-11f1-b860-02420aef2220:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:07:17.628Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-21T00:07:18.018Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:5c6JuBrNyh4NiR5k2lpUBTXjePto_GUedeat5V7NkGPVrjVIxX14Vg","callLegId":"2a126012-6d05-11f1-b9b7-02420aef2220","callSessionId":"2a125310-6d05-11f1-b860-02420aef2220","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:07:18.023Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:07:18.023Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:07:18.023Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2a125310-6d05-11f1-b860-02420aef2220:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:07:18.157Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:07:19.331Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:5c6JuBrNyh4NiR5k2lpUBTXjePto_GUedeat5V7NkGPVrjVIxX14Vg","callLegId":"2a126012-6d05-11f1-b9b7-02420aef2220","callSessionId":"2a125310-6d05-11f1-b860-02420aef2220","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:07:19.336Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:07:19.337Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:07:19.337Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2a125310-6d05-11f1-b860-02420aef2220:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:07:19.337Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:07:27.634Z LOG [Missed-call recovery SMS attempt] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:07:27.634Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:07:27.829Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a372b4077015dcde112090a","recipientCount":1}}}
2026-06-21T00:07:27.832Z LOG [Missed-call recovery SMS sent] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a372b4077015dcde112090a\",\"recipientCount\":1}}"}
2026-06-21T00:07:27.837Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:07:29.800Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:5c6JuBrNyh4NiR5k2lpUBTXjePto_GUedeat5V7NkGPVrjVIxX14Vg","callLegId":"2a126012-6d05-11f1-b9b7-02420aef2220","callSessionId":"2a125310-6d05-11f1-b860-02420aef2220","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:07:29.804Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:07:29.804Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:07:29.805Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2a125310-6d05-11f1-b860-02420aef2220:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:07:29.805Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:07:30.033Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:07:30.405Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:5c6JuBrNyh4NiR5k2lpUBTXjePto_GUedeat5V7NkGPVrjVIxX14Vg","callLegId":"2a126012-6d05-11f1-b9b7-02420aef2220","callSessionId":"2a125310-6d05-11f1-b860-02420aef2220","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:07:30.411Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:07:30.411Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:07:30.411Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2a125310-6d05-11f1-b860-02420aef2220:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:08:04.606Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:08:04.607Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"There are honeybees living inside the siding of my house, do you relocate them?","providerMessageSid":"textbee:6a372b6577015dcde1120f06"}
2026-06-21T00:08:04.613Z LOG [Inbound SMS linked to lead] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:08:04.676Z LOG [Incoming SMS saved to lead] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","messageId":"61dbd217-9e57-4329-9011-f4f42107cb59","messageProviderSid":"textbee:6a372b6577015dcde1120f06","mode":"webhook_fast_save"}
2026-06-21T00:08:04.685Z LOG [SMS cost guard disabled for testing] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:08:04.695Z LOG [Off-scope unrelated inbound saved with no automated reply] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","businessType":"pest","bodyPreview":"There are honeybees living inside the siding of my house, do you relocate them?"}
2026-06-21T00:08:04.696Z LOG [SMS webhook async AI continuation completed] {"leadId":"ecfca084-b411-4d93-847e-0b75dd7d6e15","phone":"+14783092224","providerMessageSid":"textbee:6a372b6577015dcde1120f06"}
2026-06-21T00:32:41.391Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T00:32:41.407Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T00:32:41.409Z LOG Recover Missed Call running on port 3000
2026-06-21T00:32:41.409Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T00:32:41.409Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T00:32:43.106Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T00:32:43.196Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T00:32:43.197Z LOG Recover Missed Call running on port 3000
2026-06-21T00:32:43.197Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T00:32:43.197Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T00:33:02.464Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:jYH8yRlqSdkkgWVojBSyH4gtHEymDR-z9IVaGbHZveF0ZM8aPv9WVw","callLegId":"c3363aea-6d08-11f1-b58f-02420aef3920","callSessionId":"c33636bc-6d08-11f1-8610-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:33:02.552Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:33:03.074Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:33:03.075Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:33:03.076Z LOG [Missed-call recovery triggered] {"key":"c33636bc-6d08-11f1-8610-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:33:03.097Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":10}
2026-06-21T00:33:03.265Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:jYH8yRlqSdkkgWVojBSyH4gtHEymDR-z9IVaGbHZveF0ZM8aPv9WVw","callLegId":"c3363aea-6d08-11f1-b58f-02420aef3920","callSessionId":"c33636bc-6d08-11f1-8610-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:33:03.274Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:33:03.275Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:33:03.275Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c33636bc-6d08-11f1-8610-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:33:03.440Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:33:04.375Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:jYH8yRlqSdkkgWVojBSyH4gtHEymDR-z9IVaGbHZveF0ZM8aPv9WVw","callLegId":"c3363aea-6d08-11f1-b58f-02420aef3920","callSessionId":"c33636bc-6d08-11f1-8610-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:33:04.385Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:33:04.386Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:33:04.386Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c33636bc-6d08-11f1-8610-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:33:04.386Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:33:13.106Z LOG [Missed-call recovery SMS attempt] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:33:13.107Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:33:13.446Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37314a77015dcde1130b17","recipientCount":1}}}
2026-06-21T00:33:13.452Z LOG [Missed-call recovery SMS sent] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37314a77015dcde1130b17\",\"recipientCount\":1}}"}
2026-06-21T00:33:13.461Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:33:14.979Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:jYH8yRlqSdkkgWVojBSyH4gtHEymDR-z9IVaGbHZveF0ZM8aPv9WVw","callLegId":"c3363aea-6d08-11f1-b58f-02420aef3920","callSessionId":"c33636bc-6d08-11f1-8610-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:33:14.985Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:33:14.986Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:33:14.986Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c33636bc-6d08-11f1-8610-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:33:14.986Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:33:15.225Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:33:15.447Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:jYH8yRlqSdkkgWVojBSyH4gtHEymDR-z9IVaGbHZveF0ZM8aPv9WVw","callLegId":"c3363aea-6d08-11f1-b58f-02420aef3920","callSessionId":"c33636bc-6d08-11f1-8610-02420aef3920","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:33:15.452Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:33:15.452Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:33:15.452Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c33636bc-6d08-11f1-8610-02420aef3920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:33:26.962Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:33:26.964Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have a swarm of gnats hovering over my patio every evening.","providerMessageSid":"textbee:6a37315777015dcde1130e8f"}
2026-06-21T00:33:26.971Z LOG [Inbound SMS linked to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:33:26.976Z LOG [Incoming SMS saved to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","messageId":"521cf3d8-2fa6-432c-b3fa-118611ac97f8","messageProviderSid":"textbee:6a37315777015dcde1130e8f","mode":"webhook_fast_save"}
2026-06-21T00:33:26.990Z LOG [SMS cost guard disabled for testing] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:33:27.009Z LOG [Business-related inbound revived AI intake] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"intake","bodyPreview":"I have a swarm of gnats hovering over my patio every evening."}
2026-06-21T00:33:29.116Z LOG [Customer SMS reply attempt] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-21T00:33:29.117Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-21T00:33:29.457Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37315a77015dcde1130ef3","recipientCount":1}}}
2026-06-21T00:33:29.458Z LOG [Customer SMS reply sent] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37315a77015dcde1130ef3\",\"recipientCount\":1}}"}
2026-06-21T00:33:29.468Z LOG [Owner alert check] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:33:29.468Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-21T00:33:29.469Z LOG [SMS webhook async AI continuation completed] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","providerMessageSid":"textbee:6a37315777015dcde1130e8f"}
2026-06-21T00:33:43.807Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:33:43.808Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a37316877015dcde1131182"}
2026-06-21T00:33:43.814Z LOG [Inbound SMS linked to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:33:43.876Z LOG [Incoming SMS saved to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","messageId":"95b8d63c-f93d-45d7-9c77-68c4af46e1b8","messageProviderSid":"textbee:6a37316877015dcde1131182","mode":"webhook_fast_save"}
2026-06-21T00:33:43.885Z LOG [SMS cost guard disabled for testing] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:33:45.002Z LOG [Customer SMS reply attempt] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-21T00:33:45.002Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T00:33:45.550Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37316a77015dcde11311ec","recipientCount":1}}}
2026-06-21T00:33:45.550Z LOG [Customer SMS reply sent] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37316a77015dcde11311ec\",\"recipientCount\":1}}"}
2026-06-21T00:33:45.556Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T00:33:45.559Z LOG [Owner alert check] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:33:45.560Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-21T00:33:45.560Z LOG [SMS webhook async AI continuation completed] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","providerMessageSid":"textbee:6a37316877015dcde1131182"}
2026-06-21T00:34:00.432Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:34:00.432Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 Main St, Toledo, OH","providerMessageSid":"textbee:6a37317977015dcde1131617"}
2026-06-21T00:34:00.442Z LOG [Inbound SMS linked to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:34:00.447Z LOG [Incoming SMS saved to lead] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","messageId":"733f2dff-9b8d-4801-a21c-59c3b38d6fd0","messageProviderSid":"textbee:6a37317977015dcde1131617","mode":"webhook_fast_save"}
2026-06-21T00:34:00.459Z LOG [SMS cost guard disabled for testing] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:34:01.960Z LOG [Service area check] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"out_of_area","distanceMiles":null,"reason":"customer state OH differs from business state MI"}
2026-06-21T00:34:02.019Z LOG [Customer SMS reply attempt] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"out_of_service_area_reply","provider":"textbee","messageLength":133}
2026-06-21T00:34:02.019Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":133}
2026-06-21T00:34:02.301Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37317b77015dcde11316ba","recipientCount":1}}}
2026-06-21T00:34:02.302Z LOG [Customer SMS reply sent] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","context":"out_of_service_area_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37317b77015dcde11316ba\",\"recipientCount\":1}}"}
2026-06-21T00:34:02.316Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"needs_review","qualified":0,"replyPreview":"Metro Pest Control: Thanks — that address appears to be outside our normal service area, but the office will review it and follow up."}
2026-06-21T00:34:02.322Z LOG [Owner alert check] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"needs_review","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-21T00:34:02.323Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","status":"needs_review","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-21T00:34:02.323Z LOG [SMS webhook async AI continuation completed] {"leadId":"ea437db8-89b6-4984-a98b-bbfe8d42e328","phone":"+14783092224","providerMessageSid":"textbee:6a37317977015dcde1131617"}
2026-06-21T00:41:53.375Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:U9rVjYsCawWi2cR2NJ0GcaLdoeRu95JKlfizDrCliMPD28s7AwQ76A","callLegId":"ffe04ffc-6d09-11f1-8acc-02420aef8ea1","callSessionId":"ffe0471e-6d09-11f1-91ff-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:41:53.393Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:41:53.523Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:41:53.523Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:41:53.524Z LOG [Missed-call recovery triggered] {"key":"ffe0471e-6d09-11f1-91ff-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:41:53.531Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T00:41:53.603Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:U9rVjYsCawWi2cR2NJ0GcaLdoeRu95JKlfizDrCliMPD28s7AwQ76A","callLegId":"ffe04ffc-6d09-11f1-8acc-02420aef8ea1","callSessionId":"ffe0471e-6d09-11f1-91ff-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:41:53.608Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:41:53.608Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:41:53.609Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ffe0471e-6d09-11f1-91ff-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:41:53.661Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:41:53.992Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:U9rVjYsCawWi2cR2NJ0GcaLdoeRu95JKlfizDrCliMPD28s7AwQ76A","callLegId":"ffe04ffc-6d09-11f1-8acc-02420aef8ea1","callSessionId":"ffe0471e-6d09-11f1-91ff-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:41:53.998Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:41:53.999Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:41:53.999Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ffe0471e-6d09-11f1-91ff-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:41:53.999Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:42:00.537Z LOG [Missed-call recovery SMS attempt] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:42:00.538Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:42:00.798Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37335977015dcde1137afd","recipientCount":1}}}
2026-06-21T00:42:00.803Z LOG [Missed-call recovery SMS sent] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37335977015dcde1137afd\",\"recipientCount\":1}}"}
2026-06-21T00:42:00.869Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:42:04.595Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:U9rVjYsCawWi2cR2NJ0GcaLdoeRu95JKlfizDrCliMPD28s7AwQ76A","callLegId":"ffe04ffc-6d09-11f1-8acc-02420aef8ea1","callSessionId":"ffe0471e-6d09-11f1-91ff-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:42:04.600Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:42:04.600Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:42:04.600Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ffe0471e-6d09-11f1-91ff-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:42:04.600Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:42:04.716Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:42:04.789Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:U9rVjYsCawWi2cR2NJ0GcaLdoeRu95JKlfizDrCliMPD28s7AwQ76A","callLegId":"ffe04ffc-6d09-11f1-8acc-02420aef8ea1","callSessionId":"ffe0471e-6d09-11f1-91ff-02420aef8ea1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:42:04.793Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:42:04.794Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:42:04.794Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ffe0471e-6d09-11f1-91ff-02420aef8ea1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:42:19.101Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:42:19.101Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"we have Old House Borer","providerMessageSid":"textbee:6a37336b77015dcde1138318"}
2026-06-21T00:42:19.107Z LOG [Inbound SMS linked to lead] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:42:19.120Z LOG [Incoming SMS saved to lead] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","messageId":"0188da05-9915-4c41-bd6b-556ab0a39d01","messageProviderSid":"textbee:6a37336b77015dcde1138318","mode":"webhook_fast_save"}
2026-06-21T00:42:19.126Z LOG [SMS cost guard disabled for testing] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:42:20.435Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"high","serviceType":"General Pest Issue","bodyPreview":"we have Old House Borer"}
2026-06-21T00:42:21.403Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T00:43:29.115Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-21T00:42:21.404Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-21T00:42:21.407Z LOG [Owner alert check] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:42:21.407Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Termites","reason":"not enough qualified details yet"}
2026-06-21T00:42:21.407Z LOG [SMS webhook async AI continuation completed] {"leadId":"774e3790-b35b-4a80-8837-a62e614a3ff3","phone":"+14783092224","providerMessageSid":"textbee:6a37336b77015dcde1138318"}
2026-06-21T00:47:42.484Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T00:47:42.503Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T00:47:42.505Z LOG Recover Missed Call running on port 3000
2026-06-21T00:47:42.505Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T00:47:42.505Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T00:48:02.032Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:xAJAwPNzzIAVqBWg40s1fbtPs64s930XQI2GHxF6fRGtLjvhx9GCTg","callLegId":"db55d8f4-6d0a-11f1-ad13-02420aef32a1","callSessionId":"db55d4a8-6d0a-11f1-8d15-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:48:02.156Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:48:02.631Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:48:02.631Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:48:02.632Z LOG [Missed-call recovery triggered] {"key":"db55d4a8-6d0a-11f1-8d15-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:48:02.646Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T00:48:02.845Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:xAJAwPNzzIAVqBWg40s1fbtPs64s930XQI2GHxF6fRGtLjvhx9GCTg","callLegId":"db55d8f4-6d0a-11f1-ad13-02420aef32a1","callSessionId":"db55d4a8-6d0a-11f1-8d15-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:48:02.852Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:48:02.853Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:48:02.853Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"db55d4a8-6d0a-11f1-8d15-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:48:03.020Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:48:03.968Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:xAJAwPNzzIAVqBWg40s1fbtPs64s930XQI2GHxF6fRGtLjvhx9GCTg","callLegId":"db55d8f4-6d0a-11f1-ad13-02420aef32a1","callSessionId":"db55d4a8-6d0a-11f1-8d15-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:48:03.981Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:48:03.982Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:48:03.982Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"db55d4a8-6d0a-11f1-8d15-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:48:03.982Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:48:09.656Z LOG [Missed-call recovery SMS attempt] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:48:09.658Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:48:09.993Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3734ca77015dcde114026c","recipientCount":1}}}
2026-06-21T00:48:09.998Z LOG [Missed-call recovery SMS sent] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3734ca77015dcde114026c\",\"recipientCount\":1}}"}
2026-06-21T00:48:10.009Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:48:14.533Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:xAJAwPNzzIAVqBWg40s1fbtPs64s930XQI2GHxF6fRGtLjvhx9GCTg","callLegId":"db55d8f4-6d0a-11f1-ad13-02420aef32a1","callSessionId":"db55d4a8-6d0a-11f1-8d15-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:48:14.540Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:48:14.540Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:48:14.541Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"db55d4a8-6d0a-11f1-8d15-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:48:14.541Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:48:14.768Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:48:14.932Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:xAJAwPNzzIAVqBWg40s1fbtPs64s930XQI2GHxF6fRGtLjvhx9GCTg","callLegId":"db55d8f4-6d0a-11f1-ad13-02420aef32a1","callSessionId":"db55d4a8-6d0a-11f1-8d15-02420aef32a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:48:14.939Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:48:14.939Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:48:14.939Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"db55d4a8-6d0a-11f1-8d15-02420aef32a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:48:52.409Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:48:52.411Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"we have Old House Borer","providerMessageSid":"textbee:6a3734f577015dcde114160c"}
2026-06-21T00:48:52.421Z LOG [Inbound SMS linked to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:48:52.426Z LOG [Incoming SMS saved to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","messageId":"617ac479-0c25-43b5-ba30-b2d54bd7dfcb","messageProviderSid":"textbee:6a3734f577015dcde114160c","mode":"webhook_fast_save"}
2026-06-21T00:48:52.443Z LOG [SMS cost guard disabled for testing] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:48:53.365Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"high","serviceType":"General Pest Issue","bodyPreview":"we have Old House Borer"}
2026-06-21T00:48:53.371Z LOG [Customer SMS reply attempt] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","messageLength":68}
2026-06-21T00:48:53.371Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-21T00:48:54.294Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3734f777015dcde114172a","recipientCount":1}}}
2026-06-21T00:48:54.294Z LOG [Customer SMS reply sent] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3734f777015dcde114172a\",\"recipientCount\":1}}"}
2026-06-21T00:48:54.304Z LOG [SMS webhook async AI continuation completed] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","providerMessageSid":"textbee:6a3734f577015dcde114160c"}
2026-06-21T00:49:05.507Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:49:05.507Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a37350277015dcde1141dfa"}
2026-06-21T00:49:05.516Z LOG [Inbound SMS linked to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:49:05.523Z LOG [Incoming SMS saved to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","messageId":"b5e37bab-074f-4828-8fbe-0e7fbf7c3f3b","messageProviderSid":"textbee:6a37350277015dcde1141dfa","mode":"webhook_fast_save"}
2026-06-21T00:49:05.592Z LOG [SMS cost guard disabled for testing] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:49:06.848Z LOG [Customer SMS reply attempt] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":62}
2026-06-21T00:49:06.849Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T00:49:07.470Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37350477015dcde1141f4f","recipientCount":1}}}
2026-06-21T00:49:07.470Z LOG [Customer SMS reply sent] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37350477015dcde1141f4f\",\"recipientCount\":1}}"}
2026-06-21T00:49:07.477Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T00:49:07.482Z LOG [Owner alert check] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:49:07.483Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"General Pest Issue","reason":"not enough qualified details yet"}
2026-06-21T00:49:07.484Z LOG [SMS webhook async AI continuation completed] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","providerMessageSid":"textbee:6a37350277015dcde1141dfa"}
2026-06-21T00:49:19.590Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:49:19.590Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 main st, plymouth, mi","providerMessageSid":"textbee:6a37351077015dcde1142660"}
2026-06-21T00:49:19.598Z LOG [Inbound SMS linked to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:49:19.616Z LOG [Incoming SMS saved to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","messageId":"89687c99-34b5-4363-b9dc-ef3bb83a08e6","messageProviderSid":"textbee:6a37351077015dcde1142660","mode":"webhook_fast_save"}
2026-06-21T00:49:19.626Z LOG [SMS cost guard disabled for testing] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:49:21.939Z LOG [Service area check] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T00:49:21.942Z LOG [Customer SMS reply attempt] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":74}
2026-06-21T00:49:21.942Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-21T00:49:22.229Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37351377015dcde114280a","recipientCount":1}}}
2026-06-21T00:49:22.229Z LOG [Customer SMS reply sent] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37351377015dcde114280a\",\"recipientCount\":1}}"}
2026-06-21T00:49:22.241Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-21T00:49:22.244Z LOG [Owner alert check] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:49:22.245Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"General Pest Issue","reason":"not enough qualified details yet"}
2026-06-21T00:49:22.245Z LOG [SMS webhook async AI continuation completed] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","providerMessageSid":"textbee:6a37351077015dcde1142660"}
2026-06-21T00:49:43.624Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:49:43.624Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"residential","providerMessageSid":"textbee:6a37352877015dcde114335a"}
2026-06-21T00:49:43.630Z LOG [Inbound SMS linked to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:49:43.644Z LOG [Incoming SMS saved to lead] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","messageId":"0c74b5ce-7868-4b54-936e-39b295aca103","messageProviderSid":"textbee:6a37352877015dcde114335a","mode":"webhook_fast_save"}
2026-06-21T00:49:43.653Z LOG [SMS cost guard disabled for testing] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:49:45.128Z LOG [Service area check] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T00:49:45.138Z LOG [Customer SMS reply attempt] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":95}
2026-06-21T00:49:45.139Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-21T00:49:45.395Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37352a77015dcde1143633","recipientCount":1}}}
2026-06-21T00:49:45.395Z LOG [Customer SMS reply sent] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37352a77015dcde1143633\",\"recipientCount\":1}}"}
2026-06-21T00:49:45.405Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-21T00:49:45.411Z LOG [Owner alert check] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-21T00:49:45.413Z LOG [Owner alert sending] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-21T00:49:45.414Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: General Pest Issue\nAddress: 123 main st, p","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-21T00:49:45.415Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":240}
2026-06-21T00:49:45.933Z LOG [Owner alert email result] sent/accepted
2026-06-21T00:49:46.786Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37352b77015dcde1143703","recipientCount":1}}}
2026-06-21T00:49:46.787Z LOG [Owner SMS TextBee result] accepted
2026-06-21T00:49:46.787Z LOG [Owner alert sms result] sent/accepted
2026-06-21T00:49:46.792Z LOG [Owner alert completed] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-21T00:49:46.793Z LOG [SMS webhook async AI continuation completed] {"leadId":"17397afd-87d9-438b-9e82-8f7c15ec87db","phone":"+14783092224","providerMessageSid":"textbee:6a37352877015dcde114335a"}
2026-06-21T00:50:22.151Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:fDuLbHgNq_DTv00Rizwng_W9EpmpRLybhD9hFW95b388-3ICgT6gEQ","callLegId":"2f1ba914-6d0b-11f1-baf6-eaec56353dc5","callSessionId":"2f1ba216-6d0b-11f1-9344-eaec56353dc5","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:50:22.168Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:50:22.340Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:50:22.340Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:50:22.340Z LOG [Missed-call recovery triggered] {"key":"2f1ba216-6d0b-11f1-9344-eaec56353dc5:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:50:22.347Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T00:50:22.450Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:fDuLbHgNq_DTv00Rizwng_W9EpmpRLybhD9hFW95b388-3ICgT6gEQ","callLegId":"2f1ba914-6d0b-11f1-baf6-eaec56353dc5","callSessionId":"2f1ba216-6d0b-11f1-9344-eaec56353dc5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:50:22.454Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:50:22.455Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:50:22.455Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2f1ba216-6d0b-11f1-9344-eaec56353dc5:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:50:22.526Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:50:22.919Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:fDuLbHgNq_DTv00Rizwng_W9EpmpRLybhD9hFW95b388-3ICgT6gEQ","callLegId":"2f1ba914-6d0b-11f1-baf6-eaec56353dc5","callSessionId":"2f1ba216-6d0b-11f1-9344-eaec56353dc5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:50:22.924Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:50:22.924Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:50:22.924Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2f1ba216-6d0b-11f1-9344-eaec56353dc5:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:50:22.924Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:50:29.353Z LOG [Missed-call recovery SMS attempt] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:50:29.353Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:50:29.786Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37355677015dcde1145233","recipientCount":1}}}
2026-06-21T00:50:29.791Z LOG [Missed-call recovery SMS sent] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37355677015dcde1145233\",\"recipientCount\":1}}"}
2026-06-21T00:50:29.806Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:50:33.469Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:fDuLbHgNq_DTv00Rizwng_W9EpmpRLybhD9hFW95b388-3ICgT6gEQ","callLegId":"2f1ba914-6d0b-11f1-baf6-eaec56353dc5","callSessionId":"2f1ba216-6d0b-11f1-9344-eaec56353dc5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:50:33.473Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:50:33.473Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:50:33.473Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2f1ba216-6d0b-11f1-9344-eaec56353dc5:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:50:33.473Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:50:33.620Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:50:33.712Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:fDuLbHgNq_DTv00Rizwng_W9EpmpRLybhD9hFW95b388-3ICgT6gEQ","callLegId":"2f1ba914-6d0b-11f1-baf6-eaec56353dc5","callSessionId":"2f1ba216-6d0b-11f1-9344-eaec56353dc5","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:50:33.721Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:50:33.721Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:50:33.721Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2f1ba216-6d0b-11f1-9344-eaec56353dc5:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:50:45.948Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:50:45.948Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"We have Granary Weevil","providerMessageSid":"textbee:6a37356677015dcde1145a79"}
2026-06-21T00:50:45.954Z LOG [Inbound SMS linked to lead] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:50:46.017Z LOG [Incoming SMS saved to lead] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","messageId":"0fec0f51-a310-49ea-ae45-48d6475b2a89","messageProviderSid":"textbee:6a37356677015dcde1145a79","mode":"webhook_fast_save"}
2026-06-21T00:50:46.023Z LOG [SMS cost guard disabled for testing] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:50:47.302Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"medium","serviceType":"General Pest Issue","bodyPreview":"We have Granary Weevil"}
2026-06-21T00:50:47.304Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T00:58:53.370Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-21T00:50:47.305Z LOG [SMS webhook async AI continuation completed] {"leadId":"b4269f70-fae7-4ba4-99f1-9681b1749a05","phone":"+14783092224","providerMessageSid":"textbee:6a37356677015dcde1145a79"}
2026-06-21T00:56:31.005Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T00:56:31.093Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T00:56:31.096Z LOG Recover Missed Call running on port 3000
2026-06-21T00:56:31.096Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T00:56:31.096Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T00:56:57.952Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:rljremHmPyNSs0G_TmtrChRR9CKS4cG4gtCWirzEfHy3QB69gstv4w","callLegId":"1afdc51a-6d0c-11f1-8771-02420aef8fa1","callSessionId":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T00:56:58.008Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T00:56:58.190Z LOG [Telnyx voice command ok: answer]
2026-06-21T00:56:58.191Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:56:58.191Z LOG [Missed-call recovery triggered] {"key":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T00:56:58.205Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T00:56:58.299Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:rljremHmPyNSs0G_TmtrChRR9CKS4cG4gtCWirzEfHy3QB69gstv4w","callLegId":"1afdc51a-6d0c-11f1-8771-02420aef8fa1","callSessionId":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T00:56:58.305Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:56:58.305Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:56:58.306Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T00:56:58.381Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T00:56:58.601Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:rljremHmPyNSs0G_TmtrChRR9CKS4cG4gtCWirzEfHy3QB69gstv4w","callLegId":"1afdc51a-6d0c-11f1-8771-02420aef8fa1","callSessionId":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T00:56:58.607Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:56:58.608Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:56:58.608Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T00:56:58.608Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:57:05.214Z LOG [Missed-call recovery SMS attempt] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T00:57:05.215Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T00:57:05.791Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3736e277015dcde114d08b","recipientCount":1}}}
2026-06-21T00:57:05.796Z LOG [Missed-call recovery SMS sent] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3736e277015dcde114d08b\",\"recipientCount\":1}}"}
2026-06-21T00:57:05.810Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T00:57:09.148Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:rljremHmPyNSs0G_TmtrChRR9CKS4cG4gtCWirzEfHy3QB69gstv4w","callLegId":"1afdc51a-6d0c-11f1-8771-02420aef8fa1","callSessionId":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T00:57:09.157Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:57:09.157Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:57:09.158Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T00:57:09.158Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T00:57:09.283Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T00:57:09.370Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:rljremHmPyNSs0G_TmtrChRR9CKS4cG4gtCWirzEfHy3QB69gstv4w","callLegId":"1afdc51a-6d0c-11f1-8771-02420aef8fa1","callSessionId":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T00:57:09.379Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T00:57:09.380Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:57:09.380Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1afdbc64-6d0c-11f1-85a8-02420aef8fa1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T00:57:33.050Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:57:33.052Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"we have Granary Weevil","providerMessageSid":"textbee:6a3736fd77015dcde114d614"}
2026-06-21T00:57:33.059Z LOG [Inbound SMS linked to lead] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T00:57:33.064Z LOG [Incoming SMS saved to lead] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","messageId":"90f691ac-b0fe-405b-9872-80e6797ec56b","messageProviderSid":"textbee:6a3736fd77015dcde114d614","mode":"webhook_fast_save"}
2026-06-21T00:57:33.088Z LOG [SMS cost guard disabled for testing] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:57:34.226Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"medium","serviceType":"General Pest Issue","bodyPreview":"we have Granary Weevil"}
2026-06-21T00:57:34.231Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T00:58:53.370Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-21T00:57:34.233Z WARN [AI classifier continuation reply suppressed; retrying alternate prompt] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","reason":"persistent_duplicate_outbound_send_lock","originalPreview":"Metro Pest Control: Thanks — what name should we put on the request?","alternatePreview":"Metro Pest Control: Thanks — I can collect this for the office. What name should we put on the request?"}
2026-06-21T00:57:34.236Z LOG [Customer SMS reply attempt] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply_alternate","provider":"textbee","messageLength":103}
2026-06-21T00:57:34.236Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":103}
2026-06-21T00:57:34.495Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3736ff77015dcde114d66f","recipientCount":1}}}
2026-06-21T00:57:34.495Z LOG [Customer SMS reply sent] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply_alternate","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3736ff77015dcde114d66f\",\"recipientCount\":1}}"}
2026-06-21T00:57:34.502Z LOG [AI classifier in-scope continuation reply sent or attempted] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?","hasRequiredLeadDetails":false}
2026-06-21T00:57:34.503Z LOG [SMS webhook async AI continuation completed] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","providerMessageSid":"textbee:6a3736fd77015dcde114d614"}
2026-06-21T00:57:59.114Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T00:57:59.114Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a37371777015dcde114da67"}
2026-06-21T00:57:59.123Z LOG [Inbound SMS linked to lead] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T00:57:59.134Z LOG [Incoming SMS saved to lead] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","messageId":"2815d63c-c2e3-4acb-b620-ce36f20e500f","messageProviderSid":"textbee:6a37371777015dcde114da67","mode":"webhook_fast_save"}
2026-06-21T00:57:59.201Z LOG [SMS cost guard disabled for testing] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T00:58:00.410Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T00:59:06.846Z","bodyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T00:58:00.412Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T00:58:00.418Z LOG [Owner alert check] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T00:58:00.419Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"General Pest Issue","reason":"not enough qualified details yet"}
2026-06-21T00:58:00.419Z LOG [SMS webhook async AI continuation completed] {"leadId":"44527d36-4455-442b-b1f4-02ed4fa5a1f9","phone":"+14783092224","providerMessageSid":"textbee:6a37371777015dcde114da67"}
2026-06-21T01:04:12.102Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:RizxZeizR65mvy20fLAUzGpdPKEU1SMUuS9dvMeSVc7cwWPzRdG_Mw","callLegId":"1d75d02a-6d0d-11f1-9084-bebe5dff5faa","callSessionId":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:04:12.175Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:04:12.390Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:04:12.390Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:04:12.390Z LOG [Missed-call recovery triggered] {"key":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:04:12.399Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:04:12.723Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:RizxZeizR65mvy20fLAUzGpdPKEU1SMUuS9dvMeSVc7cwWPzRdG_Mw","callLegId":"1d75d02a-6d0d-11f1-9084-bebe5dff5faa","callSessionId":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:04:12.728Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:04:12.728Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:04:12.728Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:04:12.927Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:04:13.721Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:RizxZeizR65mvy20fLAUzGpdPKEU1SMUuS9dvMeSVc7cwWPzRdG_Mw","callLegId":"1d75d02a-6d0d-11f1-9084-bebe5dff5faa","callSessionId":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:04:13.727Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:04:13.727Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:04:13.727Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:04:13.727Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:04:19.405Z LOG [Missed-call recovery SMS attempt] {"leadId":"53f3535c-0e13-4d43-885a-53fc96bb0249","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:04:19.406Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:04:19.952Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37389477015dcde115e9dd","recipientCount":1}}}
2026-06-21T01:04:19.956Z LOG [Missed-call recovery SMS sent] {"leadId":"53f3535c-0e13-4d43-885a-53fc96bb0249","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37389477015dcde115e9dd\",\"recipientCount\":1}}"}
2026-06-21T01:04:19.964Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"53f3535c-0e13-4d43-885a-53fc96bb0249","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:04:24.192Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:RizxZeizR65mvy20fLAUzGpdPKEU1SMUuS9dvMeSVc7cwWPzRdG_Mw","callLegId":"1d75d02a-6d0d-11f1-9084-bebe5dff5faa","callSessionId":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:04:24.197Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:04:24.197Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:04:24.197Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:04:24.197Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:04:24.361Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:04:24.641Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:RizxZeizR65mvy20fLAUzGpdPKEU1SMUuS9dvMeSVc7cwWPzRdG_Mw","callLegId":"1d75d02a-6d0d-11f1-9084-bebe5dff5faa","callSessionId":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:04:24.648Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:04:24.648Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:04:24.648Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"1d75c3aa-6d0d-11f1-a5fa-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:04:48.305Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T01:04:48.389Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T01:04:48.390Z LOG Recover Missed Call running on port 3000
2026-06-21T01:04:48.391Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T01:04:48.391Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T01:05:02.203Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Ziw8FLlFbQXR5-8QWjw75s71Q9_1vgOjDCzGIPKm_DXY0XlONzcyzQ","callLegId":"3b6e6240-6d0d-11f1-9768-02420aef26a1","callSessionId":"3b6e578c-6d0d-11f1-8be2-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:05:02.537Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:05:03.304Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:05:03.305Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:05:03.306Z LOG [Missed-call recovery triggered] {"key":"3b6e578c-6d0d-11f1-8be2-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:05:03.431Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:05:03.695Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Ziw8FLlFbQXR5-8QWjw75s71Q9_1vgOjDCzGIPKm_DXY0XlONzcyzQ","callLegId":"3b6e6240-6d0d-11f1-9768-02420aef26a1","callSessionId":"3b6e578c-6d0d-11f1-8be2-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:05:03.723Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:05:03.723Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:05:03.724Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3b6e578c-6d0d-11f1-8be2-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:05:03.927Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:05:05.002Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Ziw8FLlFbQXR5-8QWjw75s71Q9_1vgOjDCzGIPKm_DXY0XlONzcyzQ","callLegId":"3b6e6240-6d0d-11f1-9768-02420aef26a1","callSessionId":"3b6e578c-6d0d-11f1-8be2-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:05:05.019Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:05:05.020Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:05:05.020Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3b6e578c-6d0d-11f1-8be2-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:05:05.020Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:05:10.447Z LOG [Missed-call recovery SMS attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:05:10.448Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:05:10.757Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3738c777015dcde115fb2a","recipientCount":1}}}
2026-06-21T01:05:10.769Z LOG [Missed-call recovery SMS sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3738c777015dcde115fb2a\",\"recipientCount\":1}}"}
2026-06-21T01:05:10.842Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:05:15.604Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Ziw8FLlFbQXR5-8QWjw75s71Q9_1vgOjDCzGIPKm_DXY0XlONzcyzQ","callLegId":"3b6e6240-6d0d-11f1-9768-02420aef26a1","callSessionId":"3b6e578c-6d0d-11f1-8be2-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:05:15.610Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:05:15.610Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:05:15.611Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3b6e578c-6d0d-11f1-8be2-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:05:15.611Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:05:15.980Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:05:16.342Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Ziw8FLlFbQXR5-8QWjw75s71Q9_1vgOjDCzGIPKm_DXY0XlONzcyzQ","callLegId":"3b6e6240-6d0d-11f1-9768-02420aef26a1","callSessionId":"3b6e578c-6d0d-11f1-8be2-02420aef26a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:05:16.349Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:05:16.350Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:05:16.350Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3b6e578c-6d0d-11f1-8be2-02420aef26a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:05:25.972Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:05:25.974Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"we have Granary Weevil","providerMessageSid":"textbee:6a3738d677015dcde115ff7d"}
2026-06-21T01:05:25.982Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T01:05:25.991Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"f3705054-276d-45ae-8665-e106d2ae3dc4","messageProviderSid":"textbee:6a3738d677015dcde115ff7d","mode":"webhook_fast_save"}
2026-06-21T01:05:26.006Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:05:27.329Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"medium","serviceType":"General Pest Issue","bodyPreview":"we have Granary Weevil"}
2026-06-21T01:05:27.335Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","messageLength":68}
2026-06-21T01:05:27.336Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-21T01:05:27.847Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3738d877015dcde115ffdf","recipientCount":1}}}
2026-06-21T01:05:27.847Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3738d877015dcde115ffdf\",\"recipientCount\":1}}"}
2026-06-21T01:05:27.853Z LOG [AI classifier in-scope continuation reply sent or attempted] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?","hasRequiredLeadDetails":false}
2026-06-21T01:05:27.855Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a3738d677015dcde115ff7d"}
2026-06-21T01:05:39.190Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:05:39.191Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a3738e377015dcde1160319"}
2026-06-21T01:05:39.198Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:05:39.211Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"0ed8aeea-6231-4edd-9a62-a145abc3759f","messageProviderSid":"textbee:6a3738e377015dcde1160319","mode":"webhook_fast_save"}
2026-06-21T01:05:39.220Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:05:39.235Z LOG [Deterministic required-field reply captured] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-21T01:05:39.241Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-21T01:05:39.242Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T01:05:39.450Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3738e477015dcde1160370","recipientCount":1}}}
2026-06-21T01:05:39.450Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3738e477015dcde1160370\",\"recipientCount\":1}}"}
2026-06-21T01:05:39.456Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a3738e377015dcde1160319"}
2026-06-21T01:05:54.581Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:05:54.581Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI","providerMessageSid":"textbee:6a3738f377015dcde116070b"}
2026-06-21T01:05:54.589Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:05:54.596Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"0aca2a92-e1a6-437e-9969-d2bb57339eda","messageProviderSid":"textbee:6a3738f377015dcde116070b","mode":"webhook_fast_save"}
2026-06-21T01:05:54.665Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:05:54.676Z LOG [Deterministic required-field reply captured] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","expectedField":"service_address","capturedValue":"33536 Unicorn Ct, Westland, MI","hasRequiredLeadDetails":false}
2026-06-21T01:05:54.680Z LOG [Service area check] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-21T01:05:54.682Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_service_address_captured_continue","provider":"textbee","messageLength":74}
2026-06-21T01:05:54.682Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-21T01:05:55.021Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3738f377015dcde1160764","recipientCount":1}}}
2026-06-21T01:05:55.021Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_service_address_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3738f377015dcde1160764\",\"recipientCount\":1}}"}
2026-06-21T01:05:55.029Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a3738f377015dcde116070b"}
2026-06-21T01:06:12.629Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:06:12.629Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"residence","providerMessageSid":"textbee:6a37390577015dcde1160afb"}
2026-06-21T01:06:12.634Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:06:12.639Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"dd1dedec-78b0-4f08-a6ba-1bea916773d3","messageProviderSid":"textbee:6a37390577015dcde1160afb","mode":"webhook_fast_save"}
2026-06-21T01:06:12.651Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:06:12.655Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","messageLength":73}
2026-06-21T01:06:12.656Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":73}
2026-06-21T01:06:12.974Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37390577015dcde1160b5a","recipientCount":1}}}
2026-06-21T01:06:12.975Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37390577015dcde1160b5a\",\"recipientCount\":1}}"}
2026-06-21T01:06:12.983Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a37390577015dcde1160afb"}
2026-06-21T01:06:37.699Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:06:37.700Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a37391e77015dcde11610c5"}
2026-06-21T01:06:37.707Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:06:37.768Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"1d707abb-dc2e-4170-8b4c-be4bc1e615e0","messageProviderSid":"textbee:6a37391e77015dcde11610c5","mode":"webhook_fast_save"}
2026-06-21T01:06:37.775Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:06:37.784Z LOG [Deterministic required-field reply captured] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","expectedField":"property_type","capturedValue":"Residential","hasRequiredLeadDetails":false}
2026-06-21T01:06:37.785Z LOG [Service area check] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-21T01:06:37.788Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","messageLength":150}
2026-06-21T01:06:37.788Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-21T01:06:38.136Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37391e77015dcde11610f6","recipientCount":1}}}
2026-06-21T01:06:38.137Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37391e77015dcde11610f6\",\"recipientCount\":1}}"}
2026-06-21T01:06:38.144Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a37391e77015dcde11610c5"}
2026-06-21T01:06:56.777Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:06:56.777Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a37393177015dcde1161b72"}
2026-06-21T01:06:56.783Z LOG [Inbound SMS linked to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:06:56.812Z LOG [Incoming SMS saved to lead] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","messageId":"66eadc5c-ad62-42f0-8b25-58c53012e98d","messageProviderSid":"textbee:6a37393177015dcde1161b72","mode":"webhook_fast_save"}
2026-06-21T01:06:56.829Z LOG [SMS cost guard disabled for testing] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:06:56.837Z LOG [Deterministic required-field reply captured] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","expectedField":"urgency","capturedValue":"this week","hasRequiredLeadDetails":true}
2026-06-21T01:06:56.839Z LOG [Service area check] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-21T01:06:56.847Z LOG [Customer SMS reply attempt] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_urgency_captured_continue","provider":"textbee","messageLength":95}
2026-06-21T01:06:56.848Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-21T01:06:57.101Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37393177015dcde1161b99","recipientCount":1}}}
2026-06-21T01:06:57.101Z LOG [Customer SMS reply sent] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","context":"deterministic_urgency_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37393177015dcde1161b99\",\"recipientCount\":1}}"}
2026-06-21T01:06:57.110Z LOG [Owner alert check] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-21T01:06:57.112Z LOG [Owner alert sending] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-21T01:06:57.113Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: General Pest Issue\nAddress: 33536 Unicorn ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-21T01:06:57.114Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":191}
2026-06-21T01:06:57.313Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37393277015dcde1161bc7","recipientCount":1}}}
2026-06-21T01:06:57.313Z LOG [Owner SMS TextBee result] accepted
2026-06-21T01:06:57.313Z LOG [Owner alert sms result] sent/accepted
2026-06-21T01:06:57.687Z LOG [Owner alert email result] sent/accepted
2026-06-21T01:06:57.695Z LOG [Owner alert completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-21T01:06:57.697Z LOG [SMS webhook async AI continuation completed] {"leadId":"050d50c2-95cf-4fc6-815d-b89ec00506a9","phone":"+14783092224","providerMessageSid":"textbee:6a37393177015dcde1161b72"}
2026-06-21T01:11:12.197Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T01:11:12.290Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T01:11:12.292Z LOG Recover Missed Call running on port 3000
2026-06-21T01:11:12.292Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T01:11:12.293Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T01:11:35.372Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:LjFGDtHx8iidU8qGW2qxyfQDJOI3-nRYfDhEBTfEVGngbCveR9K0_A","callLegId":"25cd5f44-6d0e-11f1-a90e-02420aef2520","callSessionId":"25cd553a-6d0e-11f1-8a16-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:11:35.428Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:11:35.981Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:11:35.981Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:11:35.982Z LOG [Missed-call recovery triggered] {"key":"25cd553a-6d0e-11f1-8a16-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:11:35.996Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:11:36.408Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:LjFGDtHx8iidU8qGW2qxyfQDJOI3-nRYfDhEBTfEVGngbCveR9K0_A","callLegId":"25cd5f44-6d0e-11f1-a90e-02420aef2520","callSessionId":"25cd553a-6d0e-11f1-8a16-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:11:36.415Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:11:36.416Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:11:36.416Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"25cd553a-6d0e-11f1-8a16-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:11:36.546Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:11:37.397Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:LjFGDtHx8iidU8qGW2qxyfQDJOI3-nRYfDhEBTfEVGngbCveR9K0_A","callLegId":"25cd5f44-6d0e-11f1-a90e-02420aef2520","callSessionId":"25cd553a-6d0e-11f1-8a16-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:11:37.403Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:11:37.404Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:11:37.404Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"25cd553a-6d0e-11f1-8a16-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:11:37.404Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:11:43.005Z LOG [Missed-call recovery SMS attempt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:11:43.006Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:11:43.204Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373a5077015dcde1165809","recipientCount":1}}}
2026-06-21T01:11:43.209Z LOG [Missed-call recovery SMS sent] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373a5077015dcde1165809\",\"recipientCount\":1}}"}
2026-06-21T01:11:43.216Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:11:47.816Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:LjFGDtHx8iidU8qGW2qxyfQDJOI3-nRYfDhEBTfEVGngbCveR9K0_A","callLegId":"25cd5f44-6d0e-11f1-a90e-02420aef2520","callSessionId":"25cd553a-6d0e-11f1-8a16-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:11:47.821Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:11:47.822Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:11:47.822Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"25cd553a-6d0e-11f1-8a16-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:11:47.822Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:11:48.181Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:11:48.340Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:LjFGDtHx8iidU8qGW2qxyfQDJOI3-nRYfDhEBTfEVGngbCveR9K0_A","callLegId":"25cd5f44-6d0e-11f1-a90e-02420aef2520","callSessionId":"25cd553a-6d0e-11f1-8a16-02420aef2520","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:11:48.345Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:11:48.345Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:11:48.345Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"25cd553a-6d0e-11f1-8a16-02420aef2520:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:12:13.080Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:12:13.083Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Silverfish","providerMessageSid":"textbee:6a373a6d77015dcde11660e8"}
2026-06-21T01:12:13.094Z LOG [Inbound SMS linked to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T01:12:13.099Z LOG [Incoming SMS saved to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","messageId":"0e5983d0-8040-44df-af49-a3fd6928f4f0","messageProviderSid":"textbee:6a373a6d77015dcde11660e8","mode":"webhook_fast_save"}
2026-06-21T01:12:13.125Z LOG [SMS cost guard disabled for testing] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:12:14.261Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"medium","serviceType":"General Pest Issue","bodyPreview":"Silverfish"}
2026-06-21T01:12:14.266Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T01:15:27.334Z","bodyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-21T01:12:14.268Z WARN [AI classifier continuation reply suppressed; retrying alternate prompt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","reason":"persistent_duplicate_outbound_send_lock","originalPreview":"Metro Pest Control: Thanks — what name should we put on the request?","alternatePreview":"Metro Pest Control: Thanks — I can collect this for the office. What name should we put on the request?"}
2026-06-21T01:12:14.271Z LOG [Customer SMS reply attempt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply_alternate","provider":"textbee","messageLength":103}
2026-06-21T01:12:14.271Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":103}
2026-06-21T01:12:14.551Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373a6f77015dcde1166176","recipientCount":1}}}
2026-06-21T01:12:14.551Z LOG [Customer SMS reply sent] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply_alternate","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373a6f77015dcde1166176\",\"recipientCount\":1}}"}
2026-06-21T01:12:14.560Z LOG [AI classifier in-scope continuation reply sent or attempted] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?","hasRequiredLeadDetails":false}
2026-06-21T01:12:14.561Z LOG [SMS webhook async AI continuation completed] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","providerMessageSid":"textbee:6a373a6d77015dcde11660e8"}
2026-06-21T01:12:32.078Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:12:32.078Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a373a8077015dcde1166600"}
2026-06-21T01:12:32.086Z LOG [Inbound SMS linked to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:12:32.155Z LOG [Incoming SMS saved to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","messageId":"e1f10cff-35f7-4631-bf20-99fe1cc6b048","messageProviderSid":"textbee:6a373a8077015dcde1166600","mode":"webhook_fast_save"}
2026-06-21T01:12:32.162Z LOG [SMS cost guard disabled for testing] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:12:32.181Z LOG [Deterministic required-field reply captured] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-21T01:12:32.185Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T01:15:39.240Z","bodyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-21T01:12:32.187Z LOG [Customer SMS reply attempt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_customer_name_captured_continue_alternate","provider":"textbee","messageLength":97}
2026-06-21T01:12:32.187Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-21T01:12:32.401Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373a8177015dcde1166626","recipientCount":1}}}
2026-06-21T01:12:32.402Z LOG [Customer SMS reply sent] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_customer_name_captured_continue_alternate","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373a8177015dcde1166626\",\"recipientCount\":1}}"}
2026-06-21T01:12:32.408Z LOG [SMS webhook async AI continuation completed] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","providerMessageSid":"textbee:6a373a8077015dcde1166600"}
2026-06-21T01:12:54.505Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:12:54.506Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 main st, plymouth, mi","providerMessageSid":"textbee:6a373a9777015dcde1166b9d"}
2026-06-21T01:12:54.512Z LOG [Inbound SMS linked to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:12:54.521Z LOG [Incoming SMS saved to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","messageId":"c602baec-10ad-4304-aac9-0101dbc214c5","messageProviderSid":"textbee:6a373a9777015dcde1166b9d","mode":"webhook_fast_save"}
2026-06-21T01:12:54.533Z LOG [SMS cost guard disabled for testing] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:12:54.544Z LOG [Deterministic required-field reply captured] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","expectedField":"service_address","capturedValue":"123 main st, plymouth, mi","hasRequiredLeadDetails":false}
2026-06-21T01:12:54.917Z LOG [Service area check] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:12:54.919Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_service_address_captured_continue","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T01:15:54.681Z","bodyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-21T01:12:54.921Z LOG [Customer SMS reply attempt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_service_address_captured_continue_alternate","provider":"textbee","messageLength":118}
2026-06-21T01:12:54.922Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":118}
2026-06-21T01:12:55.194Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373a9877015dcde1166be4","recipientCount":1}}}
2026-06-21T01:12:55.195Z LOG [Customer SMS reply sent] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_service_address_captured_continue_alternate","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373a9877015dcde1166be4\",\"recipientCount\":1}}"}
2026-06-21T01:12:55.201Z LOG [SMS webhook async AI continuation completed] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","providerMessageSid":"textbee:6a373a9777015dcde1166b9d"}
2026-06-21T01:13:13.627Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:13:13.628Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a373aaa77015dcde11671bd"}
2026-06-21T01:13:13.633Z LOG [Inbound SMS linked to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:13:13.639Z LOG [Incoming SMS saved to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","messageId":"3e7176ce-651d-4573-9d86-c910bc590966","messageProviderSid":"textbee:6a373aaa77015dcde11671bd","mode":"webhook_fast_save"}
2026-06-21T01:13:13.651Z LOG [SMS cost guard disabled for testing] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:13:13.659Z LOG [Deterministic required-field reply captured] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","expectedField":"property_type","capturedValue":"Residential","hasRequiredLeadDetails":false}
2026-06-21T01:13:13.661Z LOG [Service area check] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:13:13.663Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T01:16:37.786Z","bodyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-21T01:13:13.668Z LOG [Customer SMS reply attempt] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_property_type_captured_continue_alternate","provider":"textbee","messageLength":155}
2026-06-21T01:13:13.668Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":155}
2026-06-21T01:13:14.114Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373aaa77015dcde1167212","recipientCount":1}}}
2026-06-21T01:13:14.114Z LOG [Customer SMS reply sent] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_property_type_captured_continue_alternate","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373aaa77015dcde1167212\",\"recipientCount\":1}}"}
2026-06-21T01:13:14.120Z LOG [SMS webhook async AI continuation completed] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","providerMessageSid":"textbee:6a373aaa77015dcde11671bd"}
2026-06-21T01:14:09.338Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:14:09.338Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"same day","providerMessageSid":"textbee:6a373ae277015dcde1167a0d"}
2026-06-21T01:14:09.346Z LOG [Inbound SMS linked to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:14:09.411Z LOG [Incoming SMS saved to lead] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","messageId":"6797ae48-1329-41b6-bf36-e857acbc1d96","messageProviderSid":"textbee:6a373ae277015dcde1167a0d","mode":"webhook_fast_save"}
2026-06-21T01:14:09.419Z LOG [SMS cost guard disabled for testing] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:14:09.429Z LOG [Deterministic required-field reply captured] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","expectedField":"urgency","capturedValue":"same day","hasRequiredLeadDetails":true}
2026-06-21T01:14:09.430Z LOG [Service area check] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:14:09.443Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","context":"deterministic_urgency_captured_continue","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T01:16:56.846Z","bodyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-21T01:14:09.448Z LOG [Owner alert check] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T01:14:09.449Z LOG [Owner alert channel waiting for AI final reply] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsBlockedUntilDone":true,"emailBlockedUntilDone":true,"aiFinalReplyComplete":false}
2026-06-21T01:14:09.449Z LOG [Owner alert skipped: no channel due now] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","smsAlreadyNotified":false,"emailAlreadyNotified":false,"smsBlockedUntilDone":true,"emailBlockedUntilDone":true}
2026-06-21T01:14:09.450Z LOG [SMS webhook async AI continuation completed] {"leadId":"952916b4-d940-49a1-8181-1fa47293f938","phone":"+14783092224","providerMessageSid":"textbee:6a373ae277015dcde1167a0d"}
2026-06-21T01:21:56.618Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T01:21:56.694Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T01:21:56.697Z LOG Recover Missed Call running on port 3000
2026-06-21T01:21:56.698Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T01:21:56.698Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T01:22:37.159Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:m3aQOv95M83D0ZOSG4WNiefl7diAQSiDmlo7aJmKvPQaD_Vx9T0UYA","callLegId":"b04a9910-6d0f-11f1-a4c2-02420aef99a1","callSessionId":"b04a8e02-6d0f-11f1-95e1-02420aef99a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:22:37.260Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:22:37.813Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:22:37.813Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:22:37.814Z LOG [Missed-call recovery triggered] {"key":"b04a8e02-6d0f-11f1-95e1-02420aef99a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:22:37.833Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:22:38.174Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:m3aQOv95M83D0ZOSG4WNiefl7diAQSiDmlo7aJmKvPQaD_Vx9T0UYA","callLegId":"b04a9910-6d0f-11f1-a4c2-02420aef99a1","callSessionId":"b04a8e02-6d0f-11f1-95e1-02420aef99a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:22:38.181Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:22:38.181Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:22:38.181Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b04a8e02-6d0f-11f1-95e1-02420aef99a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:22:38.324Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:22:39.442Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:m3aQOv95M83D0ZOSG4WNiefl7diAQSiDmlo7aJmKvPQaD_Vx9T0UYA","callLegId":"b04a9910-6d0f-11f1-a4c2-02420aef99a1","callSessionId":"b04a8e02-6d0f-11f1-95e1-02420aef99a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:22:39.447Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:22:39.447Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:22:39.447Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b04a8e02-6d0f-11f1-95e1-02420aef99a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:22:39.447Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:22:44.844Z LOG [Missed-call recovery SMS attempt] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:22:44.845Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:22:45.054Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373ce577015dcde116bd7a","recipientCount":1}}}
2026-06-21T01:22:45.059Z LOG [Missed-call recovery SMS sent] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373ce577015dcde116bd7a\",\"recipientCount\":1}}"}
2026-06-21T01:22:45.068Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:22:49.864Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:m3aQOv95M83D0ZOSG4WNiefl7diAQSiDmlo7aJmKvPQaD_Vx9T0UYA","callLegId":"b04a9910-6d0f-11f1-a4c2-02420aef99a1","callSessionId":"b04a8e02-6d0f-11f1-95e1-02420aef99a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:22:49.869Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:22:49.869Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:22:49.869Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b04a8e02-6d0f-11f1-95e1-02420aef99a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:22:49.869Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:22:50.347Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:22:50.630Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:m3aQOv95M83D0ZOSG4WNiefl7diAQSiDmlo7aJmKvPQaD_Vx9T0UYA","callLegId":"b04a9910-6d0f-11f1-a4c2-02420aef99a1","callSessionId":"b04a8e02-6d0f-11f1-95e1-02420aef99a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:22:50.637Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:22:50.637Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:22:50.638Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b04a8e02-6d0f-11f1-95e1-02420aef99a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:24:10.541Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:24:10.543Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Hi, I'm Chuck Simms. I need help with European Starling at 123 Main St, Plymouth","providerMessageSid":"textbee:6a373d3b77015dcde116c384"}
2026-06-21T01:24:10.553Z LOG [Inbound SMS linked to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T01:24:10.561Z LOG [Incoming SMS saved to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","messageId":"bb37e913-2285-4648-9e8a-d3f187210bc8","messageProviderSid":"textbee:6a373d3b77015dcde116c384","mode":"webhook_fast_save"}
2026-06-21T01:24:10.592Z LOG [SMS cost guard disabled for testing] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:24:12.720Z LOG [Service area check] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:24:12.727Z LOG [Customer SMS reply attempt] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":74}
2026-06-21T01:24:12.727Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-21T01:24:13.019Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373d3d77015dcde116c3be","recipientCount":1}}}
2026-06-21T01:24:13.019Z LOG [Customer SMS reply sent] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373d3d77015dcde116c3be\",\"recipientCount\":1}}"}
2026-06-21T01:24:13.027Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-21T01:24:13.031Z LOG [Owner alert check] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T01:24:13.033Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Wildlife","reason":"not enough qualified details yet"}
2026-06-21T01:24:13.033Z LOG [SMS webhook async AI continuation completed] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","providerMessageSid":"textbee:6a373d3b77015dcde116c384"}
2026-06-21T01:24:51.952Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:24:51.952Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"business","providerMessageSid":"textbee:6a373d6477015dcde116cc26"}
2026-06-21T01:24:51.959Z LOG [Inbound SMS linked to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:24:52.021Z LOG [Incoming SMS saved to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","messageId":"9d116f25-14b4-4e40-9ede-ed615bff980e","messageProviderSid":"textbee:6a373d6477015dcde116cc26","mode":"webhook_fast_save"}
2026-06-21T01:24:52.030Z LOG [SMS cost guard disabled for testing] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:24:52.041Z LOG [Deterministic required-field reply captured] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","expectedField":"property_type","capturedValue":"Commercial","hasRequiredLeadDetails":false}
2026-06-21T01:24:52.042Z LOG [Service area check] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:24:52.047Z LOG [Customer SMS reply attempt] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","messageLength":150}
2026-06-21T01:24:52.047Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-21T01:24:52.675Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373d6577015dcde116ccbc","recipientCount":1}}}
2026-06-21T01:24:52.675Z LOG [Customer SMS reply sent] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373d6577015dcde116ccbc\",\"recipientCount\":1}}"}
2026-06-21T01:24:52.684Z LOG [SMS webhook async AI continuation completed] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","providerMessageSid":"textbee:6a373d6477015dcde116cc26"}
2026-06-21T01:25:13.164Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:25:13.165Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"routine","providerMessageSid":"textbee:6a373d7977015dcde116d137"}
2026-06-21T01:25:13.171Z LOG [Inbound SMS linked to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:25:13.186Z LOG [Incoming SMS saved to lead] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","messageId":"069b1d2a-6312-46a0-bc2b-820a42ba7e81","messageProviderSid":"textbee:6a373d7977015dcde116d137","mode":"webhook_fast_save"}
2026-06-21T01:25:13.194Z LOG [SMS cost guard disabled for testing] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:25:13.205Z LOG [Deterministic required-field reply captured] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","expectedField":"urgency","capturedValue":"Routine","hasRequiredLeadDetails":true}
2026-06-21T01:25:13.207Z LOG [Service area check] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"in_area","distanceMiles":7.3,"reason":"estimated 7.3 miles from business address, within 25 miles"}
2026-06-21T01:25:13.273Z LOG [Customer SMS reply attempt] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"deterministic_urgency_captured_continue","provider":"textbee","messageLength":95}
2026-06-21T01:25:13.273Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-21T01:25:13.514Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373d7a77015dcde116d166","recipientCount":1}}}
2026-06-21T01:25:13.514Z LOG [Customer SMS reply sent] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","context":"deterministic_urgency_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a373d7a77015dcde116d166\",\"recipientCount\":1}}"}
2026-06-21T01:25:13.536Z LOG [Owner alert check] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-21T01:25:13.537Z LOG [Owner alert sending] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-21T01:25:13.539Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Wildlife\nAddress: 123 Main St, Plymo","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-21T01:25:13.539Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":228}
2026-06-21T01:25:13.732Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a373d7a77015dcde116d194","recipientCount":1}}}
2026-06-21T01:25:13.733Z LOG [Owner SMS TextBee result] accepted
2026-06-21T01:25:13.733Z LOG [Owner alert sms result] sent/accepted
2026-06-21T01:25:14.017Z LOG [Owner alert email result] sent/accepted
2026-06-21T01:25:14.026Z LOG [Owner alert completed] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-21T01:25:14.027Z LOG [SMS webhook async AI continuation completed] {"leadId":"3d51d44e-6fdd-4d24-ba2b-d1fe71701a3b","phone":"+14783092224","providerMessageSid":"textbee:6a373d7977015dcde116d137"}
2026-06-21T01:36:09.192Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:6qdR00LrnkHVbFKrxhCPWYA3XfzjxjtSQnoUAmsBv7NAWvxEMFqqxg","callLegId":"9446796c-6d11-11f1-98bd-02420aef98a1","callSessionId":"94466da0-6d11-11f1-9b11-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:36:09.210Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:36:09.858Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:36:09.859Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:36:09.859Z LOG [Missed-call recovery triggered] {"key":"94466da0-6d11-11f1-9b11-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:36:09.867Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:36:10.204Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:6qdR00LrnkHVbFKrxhCPWYA3XfzjxjtSQnoUAmsBv7NAWvxEMFqqxg","callLegId":"9446796c-6d11-11f1-98bd-02420aef98a1","callSessionId":"94466da0-6d11-11f1-9b11-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:36:10.210Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:36:10.210Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:36:10.211Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"94466da0-6d11-11f1-9b11-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:36:10.347Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:36:11.170Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:6qdR00LrnkHVbFKrxhCPWYA3XfzjxjtSQnoUAmsBv7NAWvxEMFqqxg","callLegId":"9446796c-6d11-11f1-98bd-02420aef98a1","callSessionId":"94466da0-6d11-11f1-9b11-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:36:11.174Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:36:11.174Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:36:11.174Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"94466da0-6d11-11f1-9b11-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:36:11.174Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:36:16.873Z LOG [Missed-call recovery SMS attempt] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:36:16.874Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:36:17.533Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37401277015dcde1178e4e","recipientCount":1}}}
2026-06-21T01:36:17.539Z LOG [Missed-call recovery SMS sent] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37401277015dcde1178e4e\",\"recipientCount\":1}}"}
2026-06-21T01:36:17.548Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:36:21.664Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:6qdR00LrnkHVbFKrxhCPWYA3XfzjxjtSQnoUAmsBv7NAWvxEMFqqxg","callLegId":"9446796c-6d11-11f1-98bd-02420aef98a1","callSessionId":"94466da0-6d11-11f1-9b11-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:36:21.668Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:36:21.669Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:36:21.669Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"94466da0-6d11-11f1-9b11-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:36:21.669Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:36:22.078Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:36:22.368Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:6qdR00LrnkHVbFKrxhCPWYA3XfzjxjtSQnoUAmsBv7NAWvxEMFqqxg","callLegId":"9446796c-6d11-11f1-98bd-02420aef98a1","callSessionId":"94466da0-6d11-11f1-9b11-02420aef98a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:36:22.376Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:36:22.376Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:36:22.377Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"94466da0-6d11-11f1-9b11-02420aef98a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:36:35.857Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:36:35.858Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"What are your hours?","providerMessageSid":"textbee:6a37402477015dcde11796ad"}
2026-06-21T01:36:35.863Z LOG [Inbound SMS linked to lead] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T01:36:35.867Z LOG [Incoming SMS saved to lead] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","messageId":"7ed6d11d-b276-459e-ac30-f8fc8cd51b95","messageProviderSid":"textbee:6a37402477015dcde11796ad","mode":"webhook_fast_save"}
2026-06-21T01:36:35.890Z LOG [SMS cost guard disabled for testing] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:36:37.454Z LOG [Customer SMS reply attempt] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":96}
2026-06-21T01:36:37.454Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":96}
2026-06-21T01:36:37.921Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37402677015dcde1179785","recipientCount":1}}}
2026-06-21T01:36:37.922Z LOG [Customer SMS reply sent] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37402677015dcde1179785\",\"recipientCount\":1}}"}
2026-06-21T01:36:37.928Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We handle pest control requests. What pest issue are you dealing with today?"}
2026-06-21T01:36:37.932Z LOG [Owner alert check] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T01:36:37.933Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-21T01:36:37.933Z LOG [SMS webhook async AI continuation completed] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","providerMessageSid":"textbee:6a37402477015dcde11796ad"}
2026-06-21T01:38:01.712Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:38:01.713Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"How much are services?","providerMessageSid":"textbee:6a37407a77015dcde117ae70"}
2026-06-21T01:38:01.725Z LOG [Inbound SMS linked to lead] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T01:38:01.747Z LOG [Incoming SMS saved to lead] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","messageId":"28c219bd-9767-4804-877e-239c2523d381","messageProviderSid":"textbee:6a37407a77015dcde117ae70","mode":"webhook_fast_save"}
2026-06-21T01:38:01.771Z LOG [SMS cost guard disabled for testing] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:38:03.574Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"medium","serviceType":"General Pest Issue","bodyPreview":"How much are services?"}
2026-06-21T01:38:03.580Z LOG [Customer SMS reply attempt] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","messageLength":62}
2026-06-21T01:38:03.580Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T01:38:03.787Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37407c77015dcde117af22","recipientCount":1}}}
2026-06-21T01:38:03.787Z LOG [Customer SMS reply sent] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37407c77015dcde117af22\",\"recipientCount\":1}}"}
2026-06-21T01:38:03.792Z LOG [AI classifier in-scope continuation reply sent or attempted] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","replyPreview":"Metro Pest Control: Thanks — what is the full service address?","hasRequiredLeadDetails":false}
2026-06-21T01:38:03.793Z LOG [SMS webhook async AI continuation completed] {"leadId":"de8709f9-7640-4cc9-918d-4e210fa12670","phone":"+14783092224","providerMessageSid":"textbee:6a37407a77015dcde117ae70"}
2026-06-21T01:48:24.687Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T01:48:24.700Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T01:48:24.701Z LOG Recover Missed Call running on port 3000
2026-06-21T01:48:24.702Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T01:48:24.702Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T01:50:42.506Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T01:50:42.595Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T01:50:42.598Z LOG Recover Missed Call running on port 3000
2026-06-21T01:50:42.598Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T01:50:42.599Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T01:50:56.149Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Kj_eeXY-TgQP8QClTRggxQBW9PmAhViSd-4GZXUCQyoE_miSJfMg-A","callLegId":"a5300160-6d13-11f1-a519-02420aef8f20","callSessionId":"a52ff666-6d13-11f1-8f84-02420aef8f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T01:50:56.214Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T01:50:56.380Z LOG [Telnyx voice command ok: answer]
2026-06-21T01:50:56.381Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:50:56.382Z LOG [Missed-call recovery triggered] {"key":"a52ff666-6d13-11f1-8f84-02420aef8f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T01:50:56.410Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T01:50:56.485Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Kj_eeXY-TgQP8QClTRggxQBW9PmAhViSd-4GZXUCQyoE_miSJfMg-A","callLegId":"a5300160-6d13-11f1-a519-02420aef8f20","callSessionId":"a52ff666-6d13-11f1-8f84-02420aef8f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T01:50:56.499Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:50:56.500Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:50:56.500Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a52ff666-6d13-11f1-8f84-02420aef8f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T01:50:56.563Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T01:50:56.778Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Kj_eeXY-TgQP8QClTRggxQBW9PmAhViSd-4GZXUCQyoE_miSJfMg-A","callLegId":"a5300160-6d13-11f1-a519-02420aef8f20","callSessionId":"a52ff666-6d13-11f1-8f84-02420aef8f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T01:50:56.790Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:50:56.791Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:50:56.791Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a52ff666-6d13-11f1-8f84-02420aef8f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T01:50:56.791Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:51:03.426Z LOG [Missed-call recovery SMS attempt] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T01:51:03.427Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T01:51:03.806Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37438877015dcde1185160","recipientCount":1}}}
2026-06-21T01:51:03.821Z LOG [Missed-call recovery SMS sent] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37438877015dcde1185160\",\"recipientCount\":1}}"}
2026-06-21T01:51:03.894Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T01:51:07.393Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Kj_eeXY-TgQP8QClTRggxQBW9PmAhViSd-4GZXUCQyoE_miSJfMg-A","callLegId":"a5300160-6d13-11f1-a519-02420aef8f20","callSessionId":"a52ff666-6d13-11f1-8f84-02420aef8f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T01:51:07.452Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:51:07.452Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:51:07.453Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a52ff666-6d13-11f1-8f84-02420aef8f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T01:51:07.453Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T01:51:07.568Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T01:51:07.678Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Kj_eeXY-TgQP8QClTRggxQBW9PmAhViSd-4GZXUCQyoE_miSJfMg-A","callLegId":"a5300160-6d13-11f1-a519-02420aef8f20","callSessionId":"a52ff666-6d13-11f1-8f84-02420aef8f20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T01:51:07.683Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T01:51:07.684Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:51:07.684Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a52ff666-6d13-11f1-8f84-02420aef8f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T01:51:21.103Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T01:51:21.106Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"What are your hours?","providerMessageSid":"textbee:6a37439977015dcde11853c4"}
2026-06-21T01:51:21.115Z LOG [Inbound SMS linked to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T01:51:21.120Z LOG [Incoming SMS saved to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","messageId":"319f83ee-20ce-4f7f-aeb0-7bb9aaca72fe","messageProviderSid":"textbee:6a37439977015dcde11853c4","mode":"webhook_fast_save"}
2026-06-21T01:51:21.135Z LOG [SMS cost guard disabled for testing] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T01:51:23.101Z LOG [Customer SMS reply attempt] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":96}
2026-06-21T01:51:23.101Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":96}
2026-06-21T01:51:23.352Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37439c77015dcde11853ea","recipientCount":1}}}
2026-06-21T01:51:23.353Z LOG [Customer SMS reply sent] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37439c77015dcde11853ea\",\"recipientCount\":1}}"}
2026-06-21T01:51:23.362Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We handle pest control requests. What pest issue are you dealing with today?"}
2026-06-21T01:51:23.372Z LOG [Owner alert check] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":false,"issueTypePresent":false,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T01:51:23.373Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-21T01:51:23.373Z LOG [SMS webhook async AI continuation completed] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","providerMessageSid":"textbee:6a37439977015dcde11853c4"}
2026-06-21T02:20:42.632Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Just checking in — do you still need help with the pest issue? Reply with your address/city and preferred time, and Metro Pest Control can help with the next step. Reply STOP to opt out."}
2026-06-21T04:20:42.828Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-21T06:20:42.900Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-21T08:20:42.936Z WARN [SMS skipped: TWILIO_PHONE_NUMBER is missing] {"to":"+14783092224","body":"Metro Pest Control here — we do not want you to lose time if the issue is getting worse. Do you want us to help with a quote or appointment? Reply STOP to opt out."}
2026-06-21T09:03:17.232Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T09:03:17.427Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T09:03:17.431Z LOG Recover Missed Call running on port 3000
2026-06-21T09:03:17.431Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T09:03:17.431Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T09:03:19.879Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:6m6U6MofTh7DV1AR3IcC0See8vyPV810nWh08vL7PdWIr72lNZ2L1A","callLegId":"0cb396b2-6d50-11f1-a4b9-a21450c80fe4","callSessionId":"0cb38fa0-6d50-11f1-a225-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T09:03:20.324Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T09:03:20.795Z LOG [Telnyx voice command ok: answer]
2026-06-21T09:03:20.795Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T09:03:20.796Z LOG [Missed-call recovery triggered] {"key":"0cb38fa0-6d50-11f1-a225-a21450c80fe4:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T09:03:20.827Z LOG [Fresh missed-call intake created] {"previousLeadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","leadId":"da7c345a-2211-4b3a-af4d-34947bd64bd4","phone":"+14783092224","source":"inbound_call_text"}
2026-06-21T09:03:20.863Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T09:03:20.922Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:6m6U6MofTh7DV1AR3IcC0See8vyPV810nWh08vL7PdWIr72lNZ2L1A","callLegId":"0cb396b2-6d50-11f1-a4b9-a21450c80fe4","callSessionId":"0cb38fa0-6d50-11f1-a225-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T09:03:20.973Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T09:03:20.974Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T09:03:20.975Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0cb38fa0-6d50-11f1-a225-a21450c80fe4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T09:03:21.090Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T09:03:21.397Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:6m6U6MofTh7DV1AR3IcC0See8vyPV810nWh08vL7PdWIr72lNZ2L1A","callLegId":"0cb396b2-6d50-11f1-a4b9-a21450c80fe4","callSessionId":"0cb38fa0-6d50-11f1-a225-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T09:03:21.412Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T09:03:21.413Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T09:03:21.413Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0cb38fa0-6d50-11f1-a225-a21450c80fe4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T09:03:21.413Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T09:03:28.365Z LOG [Missed-call recovery SMS attempt] {"leadId":"da7c345a-2211-4b3a-af4d-34947bd64bd4","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T09:03:28.414Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T09:03:32.256Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:6m6U6MofTh7DV1AR3IcC0See8vyPV810nWh08vL7PdWIr72lNZ2L1A","callLegId":"0cb396b2-6d50-11f1-a4b9-a21450c80fe4","callSessionId":"0cb38fa0-6d50-11f1-a225-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T09:03:32.542Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T09:03:32.545Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T09:03:32.546Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0cb38fa0-6d50-11f1-a225-a21450c80fe4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T09:03:32.546Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T09:03:32.719Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37a8e377015dcde1344d62","recipientCount":1}}}
2026-06-21T09:03:32.767Z LOG [Missed-call recovery SMS sent] {"leadId":"da7c345a-2211-4b3a-af4d-34947bd64bd4","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37a8e377015dcde1344d62\",\"recipientCount\":1}}"}
2026-06-21T09:03:32.844Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"da7c345a-2211-4b3a-af4d-34947bd64bd4","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T09:03:32.974Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T09:03:33.088Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:6m6U6MofTh7DV1AR3IcC0See8vyPV810nWh08vL7PdWIr72lNZ2L1A","callLegId":"0cb396b2-6d50-11f1-a4b9-a21450c80fe4","callSessionId":"0cb38fa0-6d50-11f1-a225-a21450c80fe4","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T09:03:33.106Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T09:03:33.106Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T09:03:33.107Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0cb38fa0-6d50-11f1-a225-a21450c80fe4:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T09:03:53.242Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T09:03:53.269Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"what are your hours?","providerMessageSid":"textbee:6a37a8f977015dcde1346042"}
2026-06-21T09:03:53.350Z LOG [Inbound SMS linked to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T09:03:53.359Z LOG [Incoming SMS saved to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","messageId":"ab4d1eb5-15cb-4419-ba9d-99e589f0219c","messageProviderSid":"textbee:6a37a8f977015dcde1346042","mode":"webhook_fast_save"}
2026-06-21T09:03:53.403Z LOG [SMS cost guard disabled for testing] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T09:03:53.414Z LOG [Customer SMS reply attempt] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","context":"direct_business_hours_answer","provider":"textbee","messageLength":144}
2026-06-21T09:03:53.414Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":144}
2026-06-21T09:03:54.756Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a37a8fb77015dcde13461a3","recipientCount":1}}}
2026-06-21T09:03:54.756Z LOG [Customer SMS reply sent] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","context":"direct_business_hours_answer","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a37a8fb77015dcde13461a3\",\"recipientCount\":1}}"}
2026-06-21T09:03:54.816Z LOG [Direct business hours question handled] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","replyPreview":"Metro Pest Control: Our hours are Mon-Fri, 8AM-6PM America/Detroit. We handle pest control requests. What pest issue are you dealing with today?","sent":true}
2026-06-21T09:03:54.818Z LOG [SMS webhook async AI continuation completed] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","providerMessageSid":"textbee:6a37a8f977015dcde1346042"}
2026-06-21T09:04:25.423Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T09:04:25.475Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"hours of operation?","providerMessageSid":"textbee:6a37a91977015dcde1347545"}
2026-06-21T09:04:25.829Z LOG [Inbound SMS linked to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T09:04:25.850Z LOG [Incoming SMS saved to lead] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","messageId":"6f178154-e90e-4968-88e4-3016317d51ac","messageProviderSid":"textbee:6a37a91977015dcde1347545","mode":"webhook_fast_save"}
2026-06-21T09:04:25.922Z LOG [SMS cost guard disabled for testing] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T09:04:25.929Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","context":"direct_business_hours_answer","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-21T09:13:53.412Z","bodyPreview":"Metro Pest Control: Our hours are Mon-Fri, 8AM-6PM America/Detroit. We handle pest control requests. What pest issue are you dealing with today?"}
2026-06-21T09:04:25.970Z LOG [Direct business hours question handled] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","replyPreview":"Metro Pest Control: Our hours are Mon-Fri, 8AM-6PM America/Detroit. We handle pest control requests. What pest issue are you dealing with today?","sent":true}
2026-06-21T09:04:25.972Z LOG [SMS webhook async AI continuation completed] {"leadId":"f2a8d377-6dde-4eb0-a392-a7d3996b6a9c","phone":"+14783092224","providerMessageSid":"textbee:6a37a91977015dcde1347545"}
2026-06-21T09:19:14.940Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T09:19:15.120Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T09:19:15.123Z LOG Recover Missed Call running on port 3000
2026-06-21T09:19:15.124Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T09:19:15.124Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T11:07:42.325Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T11:07:42.422Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T11:07:42.427Z LOG Recover Missed Call running on port 3000
2026-06-21T11:07:42.427Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T11:07:42.428Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T11:12:32.338Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T11:12:32.437Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T11:12:32.439Z LOG Recover Missed Call running on port 3000
2026-06-21T11:12:32.440Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T11:12:32.440Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T11:17:11.346Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T11:17:11.431Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T11:17:11.433Z LOG Recover Missed Call running on port 3000
2026-06-21T11:17:11.433Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T11:17:11.433Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T11:27:28.331Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T11:27:28.344Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T11:27:28.414Z LOG Recover Missed Call running on port 3000
2026-06-21T11:27:28.415Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T11:27:28.415Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T11:33:17.041Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T11:33:17.133Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T11:33:17.136Z LOG Recover Missed Call running on port 3000
2026-06-21T11:33:17.136Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T11:33:17.136Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T17:54:01.723Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T17:54:01.791Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T17:54:01.814Z LOG Recover Missed Call running on port 3000
2026-06-21T17:54:01.815Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T17:54:01.815Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T18:12:58.622Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T18:12:58.639Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T18:12:58.640Z LOG Recover Missed Call running on port 3000
2026-06-21T18:12:58.641Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T18:12:58.641Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T18:20:07.239Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T18:20:07.348Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T18:20:07.350Z LOG Recover Missed Call running on port 3000
2026-06-21T18:20:07.350Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T18:20:07.350Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T18:34:59.725Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T18:34:59.823Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T18:34:59.826Z LOG Recover Missed Call running on port 3000
2026-06-21T18:34:59.826Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T18:34:59.827Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T20:23:40.323Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-21T20:23:40.344Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-21T20:23:40.347Z LOG Recover Missed Call running on port 3000
2026-06-21T20:23:40.348Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-21T20:23:40.348Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-21T20:27:18.439Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Tobwy9u0VepA3oQx6F9bTKYpbhvynh4l58J8ZzqObIz98f7Ll0ex7g","callLegId":"997166d8-6daf-11f1-b541-eabbb84a066f","callSessionId":"99715f26-6daf-11f1-87eb-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-21T20:27:18.774Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-21T20:27:19.169Z LOG [Telnyx voice command ok: answer]
2026-06-21T20:27:19.169Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T20:27:19.170Z LOG [Missed-call recovery triggered] {"key":"99715f26-6daf-11f1-87eb-eabbb84a066f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-21T20:27:19.199Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-21T20:27:19.446Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Tobwy9u0VepA3oQx6F9bTKYpbhvynh4l58J8ZzqObIz98f7Ll0ex7g","callLegId":"997166d8-6daf-11f1-b541-eabbb84a066f","callSessionId":"99715f26-6daf-11f1-87eb-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-21T20:27:19.460Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T20:27:19.460Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T20:27:19.461Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"99715f26-6daf-11f1-87eb-eabbb84a066f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-21T20:27:19.634Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-21T20:27:20.362Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Tobwy9u0VepA3oQx6F9bTKYpbhvynh4l58J8ZzqObIz98f7Ll0ex7g","callLegId":"997166d8-6daf-11f1-b541-eabbb84a066f","callSessionId":"99715f26-6daf-11f1-87eb-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-21T20:27:20.378Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T20:27:20.378Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T20:27:20.379Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"99715f26-6daf-11f1-87eb-eabbb84a066f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-21T20:27:20.380Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T20:27:26.220Z LOG [Missed-call recovery SMS attempt] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-21T20:27:26.221Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-21T20:27:26.416Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38492f77015dcde160c258","recipientCount":1}}}
2026-06-21T20:27:26.429Z LOG [Missed-call recovery SMS sent] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a38492f77015dcde160c258\",\"recipientCount\":1}}"}
2026-06-21T20:27:26.501Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-21T20:27:31.212Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Tobwy9u0VepA3oQx6F9bTKYpbhvynh4l58J8ZzqObIz98f7Ll0ex7g","callLegId":"997166d8-6daf-11f1-b541-eabbb84a066f","callSessionId":"99715f26-6daf-11f1-87eb-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-21T20:27:31.222Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T20:27:31.223Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T20:27:31.223Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"99715f26-6daf-11f1-87eb-eabbb84a066f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-21T20:27:31.224Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-21T20:27:31.437Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-21T20:27:31.660Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Tobwy9u0VepA3oQx6F9bTKYpbhvynh4l58J8ZzqObIz98f7Ll0ex7g","callLegId":"997166d8-6daf-11f1-b541-eabbb84a066f","callSessionId":"99715f26-6daf-11f1-87eb-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-21T20:27:31.672Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-21T20:27:31.672Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T20:27:31.673Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"99715f26-6daf-11f1-87eb-eabbb84a066f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-21T20:28:19.286Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T20:28:19.289Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have rats need help as soon as possible","providerMessageSid":"textbee:6a38496377015dcde160c824"}
2026-06-21T20:28:19.300Z LOG [Inbound SMS linked to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-21T20:28:19.308Z LOG [Incoming SMS saved to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","messageId":"bb21a2af-0e74-4176-82dd-dd654d12eb86","messageProviderSid":"textbee:6a38496377015dcde160c824","mode":"webhook_fast_save"}
2026-06-21T20:28:19.326Z LOG [SMS cost guard disabled for testing] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T20:28:19.355Z LOG [Business-related inbound revived AI intake] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"intake","bodyPreview":"I have rats need help as soon as possible"}
2026-06-21T20:28:21.455Z LOG [Customer SMS reply attempt] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-21T20:28:21.455Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-21T20:28:21.858Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38496677015dcde160c85b","recipientCount":1}}}
2026-06-21T20:28:21.858Z LOG [Customer SMS reply sent] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a38496677015dcde160c85b\",\"recipientCount\":1}}"}
2026-06-21T20:28:21.875Z LOG [Owner alert check] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-21T20:28:21.876Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Mice/Rats","reason":"not enough qualified details yet"}
2026-06-21T20:28:21.877Z LOG [SMS webhook async AI continuation completed] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","providerMessageSid":"textbee:6a38496377015dcde160c824"}
2026-06-21T20:28:37.828Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T20:28:37.829Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a38497577015dcde160cb2e"}
2026-06-21T20:28:37.835Z LOG [Inbound SMS linked to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T20:28:37.842Z LOG [Incoming SMS saved to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","messageId":"33c84817-fc61-47d7-ab64-f4da5e29a3d3","messageProviderSid":"textbee:6a38497577015dcde160cb2e","mode":"webhook_fast_save"}
2026-06-21T20:28:37.862Z LOG [SMS cost guard disabled for testing] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T20:28:37.888Z LOG [Deterministic required-field reply captured] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-21T20:28:37.893Z LOG [Customer SMS reply attempt] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-21T20:28:37.894Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-21T20:28:38.675Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38497777015dcde160cc33","recipientCount":1}}}
2026-06-21T20:28:38.675Z LOG [Customer SMS reply sent] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a38497777015dcde160cc33\",\"recipientCount\":1}}"}
2026-06-21T20:28:38.685Z LOG [SMS webhook async AI continuation completed] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","providerMessageSid":"textbee:6a38497577015dcde160cb2e"}
2026-06-21T20:28:54.807Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T20:28:54.808Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a38498777015dcde160d34b"}
2026-06-21T20:28:54.816Z LOG [Inbound SMS linked to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T20:28:54.877Z LOG [Incoming SMS saved to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","messageId":"baee99e9-935c-46ff-b2f5-0b75b00bcb38","messageProviderSid":"textbee:6a38498777015dcde160d34b","mode":"webhook_fast_save"}
2026-06-21T20:28:54.891Z LOG [SMS cost guard disabled for testing] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T20:28:54.905Z LOG [Deterministic required-field reply captured] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","expectedField":"service_address","capturedValue":"33536 Unicorn Ct, Westland, MI 48186","hasRequiredLeadDetails":false}
2026-06-21T20:28:54.908Z LOG [Service area check] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-21T20:28:54.912Z LOG [Customer SMS reply attempt] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_service_address_captured_continue","provider":"textbee","messageLength":74}
2026-06-21T20:28:54.913Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-21T20:28:55.217Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38498777015dcde160d376","recipientCount":1}}}
2026-06-21T20:28:55.217Z LOG [Customer SMS reply sent] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_service_address_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a38498777015dcde160d376\",\"recipientCount\":1}}"}
2026-06-21T20:28:55.225Z LOG [SMS webhook async AI continuation completed] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","providerMessageSid":"textbee:6a38498777015dcde160d34b"}
2026-06-21T20:29:10.881Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-21T20:29:10.881Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a38499777015dcde160d633"}
2026-06-21T20:29:10.891Z LOG [Inbound SMS linked to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-21T20:29:10.900Z LOG [Incoming SMS saved to lead] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","messageId":"6da4e839-7593-4552-bb91-0df391b95a3c","messageProviderSid":"textbee:6a38499777015dcde160d633","mode":"webhook_fast_save"}
2026-06-21T20:29:10.917Z LOG [SMS cost guard disabled for testing] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-21T20:29:10.935Z LOG [Deterministic required-field reply captured] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","expectedField":"property_type","capturedValue":"Residential","hasRequiredLeadDetails":true}
2026-06-21T20:29:10.939Z LOG [Service area check] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-21T20:29:10.976Z LOG [Customer SMS reply attempt] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","messageLength":95}
2026-06-21T20:29:10.976Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-21T20:29:11.297Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38499877015dcde160d688","recipientCount":1}}}
2026-06-21T20:29:11.298Z LOG [Customer SMS reply sent] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a38499877015dcde160d688\",\"recipientCount\":1}}"}
2026-06-21T20:29:11.352Z LOG [Owner alert check] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-21T20:29:11.354Z LOG [Owner alert sending] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-21T20:29:11.356Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Mice/Rats\nAddress: 33536 Unicorn Ct, Westl","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-21T20:29:11.357Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":195}
2026-06-21T20:29:11.556Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a38499877015dcde160d6ba","recipientCount":1}}}
2026-06-21T20:29:11.556Z LOG [Owner SMS TextBee result] accepted
2026-06-21T20:29:11.556Z LOG [Owner alert sms result] sent/accepted
2026-06-21T20:29:11.977Z LOG [Owner alert email result] sent/accepted
2026-06-21T20:29:11.996Z LOG [Owner alert completed] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-21T20:29:11.997Z LOG [SMS webhook async AI continuation completed] {"leadId":"b9d03809-116f-491e-ad12-8294f4c4f453","phone":"+14783092224","providerMessageSid":"textbee:6a38499777015dcde160d633"}
2026-06-22T12:16:59.427Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T12:16:59.520Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T12:16:59.523Z LOG Recover Missed Call running on port 3000
2026-06-22T12:16:59.523Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T12:16:59.524Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T12:48:25.137Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T12:48:25.226Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T12:48:25.228Z LOG Recover Missed Call running on port 3000
2026-06-22T12:48:25.228Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T12:48:25.228Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T13:10:21.320Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T13:10:21.335Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T13:10:21.337Z LOG Recover Missed Call running on port 3000
2026-06-22T13:10:21.337Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T13:10:21.338Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T13:25:32.226Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T13:25:32.241Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T13:25:32.319Z LOG Recover Missed Call running on port 3000
2026-06-22T13:25:32.320Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T13:25:32.320Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T13:37:45.726Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T13:37:45.820Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T13:37:45.822Z LOG Recover Missed Call running on port 3000
2026-06-22T13:37:45.823Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T13:37:45.823Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T13:55:35.034Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T13:55:35.126Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T13:55:35.129Z LOG Recover Missed Call running on port 3000
2026-06-22T13:55:35.129Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T13:55:35.130Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:16:47.423Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T14:16:47.524Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T14:16:47.525Z LOG Recover Missed Call running on port 3000
2026-06-22T14:16:47.525Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T14:16:47.526Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:19:08.837Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T14:19:08.921Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T14:19:08.923Z LOG Recover Missed Call running on port 3000
2026-06-22T14:19:08.923Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T14:19:08.923Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:21:34.972Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:kO_Jx_P3omFMZ64zF7P-a_oe4yj5dCuhDarQRRUxz9m5ibq1YUVd7g","callLegId":"ac9f766e-6e45-11f1-825d-02420aef24a1","callSessionId":"ac9f6cfa-6e45-11f1-8883-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T14:21:35.287Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T14:21:35.773Z LOG [Telnyx voice command ok: answer]
2026-06-22T14:21:35.774Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T14:21:35.775Z LOG [Missed-call recovery triggered] {"key":"ac9f6cfa-6e45-11f1-8883-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T14:21:35.817Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T14:21:36.021Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:kO_Jx_P3omFMZ64zF7P-a_oe4yj5dCuhDarQRRUxz9m5ibq1YUVd7g","callLegId":"ac9f766e-6e45-11f1-825d-02420aef24a1","callSessionId":"ac9f6cfa-6e45-11f1-8883-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T14:21:36.038Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:21:36.039Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T14:21:36.040Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac9f6cfa-6e45-11f1-8883-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T14:21:36.159Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T14:21:37.106Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:kO_Jx_P3omFMZ64zF7P-a_oe4yj5dCuhDarQRRUxz9m5ibq1YUVd7g","callLegId":"ac9f766e-6e45-11f1-825d-02420aef24a1","callSessionId":"ac9f6cfa-6e45-11f1-8883-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T14:21:37.121Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:21:37.122Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T14:21:37.122Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac9f6cfa-6e45-11f1-8883-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T14:21:37.122Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T14:21:42.838Z LOG [Missed-call recovery SMS attempt] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T14:21:42.839Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T14:21:43.187Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3944f877015dcde1b73036","recipientCount":1}}}
2026-06-22T14:21:43.195Z LOG [Missed-call recovery SMS sent] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3944f877015dcde1b73036\",\"recipientCount\":1}}"}
2026-06-22T14:21:43.207Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T14:21:47.568Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:kO_Jx_P3omFMZ64zF7P-a_oe4yj5dCuhDarQRRUxz9m5ibq1YUVd7g","callLegId":"ac9f766e-6e45-11f1-825d-02420aef24a1","callSessionId":"ac9f6cfa-6e45-11f1-8883-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T14:21:47.577Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:21:47.577Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T14:21:47.578Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac9f6cfa-6e45-11f1-8883-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T14:21:47.578Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T14:21:47.777Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T14:21:48.292Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:kO_Jx_P3omFMZ64zF7P-a_oe4yj5dCuhDarQRRUxz9m5ibq1YUVd7g","callLegId":"ac9f766e-6e45-11f1-825d-02420aef24a1","callSessionId":"ac9f6cfa-6e45-11f1-8883-02420aef24a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T14:21:48.300Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:21:48.300Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T14:21:48.300Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac9f6cfa-6e45-11f1-8883-02420aef24a1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T14:22:29.155Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:22:29.157Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I need help right away at 33536 Unicorn Ct, Westland, MI 48186, we have ants tha","providerMessageSid":"textbee:6a39452577015dcde1b73701"}
2026-06-22T14:22:29.166Z LOG [Inbound SMS linked to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T14:22:29.176Z LOG [Incoming SMS saved to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","messageId":"592cfae8-92a3-4cc5-bef0-eb658a447027","messageProviderSid":"textbee:6a39452577015dcde1b73701","mode":"webhook_fast_save"}
2026-06-22T14:22:29.189Z LOG [SMS cost guard disabled for testing] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:22:29.209Z LOG [Customer SMS reply attempt] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","messageLength":130}
2026-06-22T14:22:29.209Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":130}
2026-06-22T14:22:29.542Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39452677015dcde1b7373b","recipientCount":1}}}
2026-06-22T14:22:29.543Z LOG [Customer SMS reply sent] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39452677015dcde1b7373b\",\"recipientCount\":1}}"}
2026-06-22T14:22:29.558Z LOG [Direct business knowledge question handled] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","intent":"emergency_rules_question","inferredServiceType":"Ants","inferredUrgency":null,"inferredName":null,"inferredAddress":"33536 Unicorn Ct, Westland, MI 48186","inferredPropertyType":null,"replyPreview":"Metro Pest Control: The office can confirm urgent or same-day availability. Thanks — is this a residential or commercial property?","sent":true}
2026-06-22T14:22:29.560Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","providerMessageSid":"textbee:6a39452577015dcde1b73701"}
2026-06-22T14:23:00.132Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:23:00.133Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a39454577015dcde1b73ce7"}
2026-06-22T14:23:00.141Z LOG [Inbound SMS linked to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T14:23:00.155Z LOG [Incoming SMS saved to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","messageId":"fd3f0734-0551-4e0c-a2fa-f6193572d154","messageProviderSid":"textbee:6a39454577015dcde1b73ce7","mode":"webhook_fast_save"}
2026-06-22T14:23:00.175Z LOG [SMS cost guard disabled for testing] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:23:00.190Z LOG [Deterministic required-field reply captured] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","expectedField":"property_type","capturedValue":"Residential","hasRequiredLeadDetails":false}
2026-06-22T14:23:00.193Z LOG [Service area check] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T14:23:00.197Z LOG [Customer SMS reply attempt] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","messageLength":68}
2026-06-22T14:23:00.197Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-22T14:23:00.516Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39454577015dcde1b73d2c","recipientCount":1}}}
2026-06-22T14:23:00.516Z LOG [Customer SMS reply sent] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39454577015dcde1b73d2c\",\"recipientCount\":1}}"}
2026-06-22T14:23:00.532Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","providerMessageSid":"textbee:6a39454577015dcde1b73ce7"}
2026-06-22T14:23:17.444Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:23:17.445Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a39455677015dcde1b740d1"}
2026-06-22T14:23:17.452Z LOG [Inbound SMS linked to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T14:23:17.514Z LOG [Incoming SMS saved to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","messageId":"67f95f7b-1b27-4a42-bfa1-37165aaf549a","messageProviderSid":"textbee:6a39455677015dcde1b740d1","mode":"webhook_fast_save"}
2026-06-22T14:23:17.527Z LOG [SMS cost guard disabled for testing] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:23:17.555Z LOG [Deterministic required-field reply captured] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-22T14:23:17.556Z LOG [Service area check] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T14:23:17.561Z LOG [Customer SMS reply attempt] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":150}
2026-06-22T14:23:17.561Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-22T14:23:17.890Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39455677015dcde1b7411c","recipientCount":1}}}
2026-06-22T14:23:17.890Z LOG [Customer SMS reply sent] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39455677015dcde1b7411c\",\"recipientCount\":1}}"}
2026-06-22T14:23:17.900Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","providerMessageSid":"textbee:6a39455677015dcde1b740d1"}
2026-06-22T14:23:41.941Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:23:41.941Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"today","providerMessageSid":"textbee:6a39456e77015dcde1b74576"}
2026-06-22T14:23:41.949Z LOG [Inbound SMS linked to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T14:23:41.956Z LOG [Incoming SMS saved to lead] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","messageId":"32122f4f-5269-4349-9dce-f2b322b5ac5a","messageProviderSid":"textbee:6a39456e77015dcde1b74576","mode":"webhook_fast_save"}
2026-06-22T14:23:41.972Z LOG [SMS cost guard disabled for testing] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:23:42.006Z LOG [Customer SMS reply attempt] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","messageLength":151}
2026-06-22T14:23:42.007Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":151}
2026-06-22T14:23:42.465Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39456f77015dcde1b745ae","recipientCount":1}}}
2026-06-22T14:23:42.465Z LOG [Customer SMS reply sent] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39456f77015dcde1b745ae\",\"recipientCount\":1}}"}
2026-06-22T14:23:42.547Z LOG [Direct business knowledge question handled] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","intent":"emergency_rules_question","inferredServiceType":null,"inferredUrgency":"Today / Same Day","inferredName":null,"inferredAddress":null,"inferredPropertyType":null,"replyPreview":"Metro Pest Control: The office can confirm urgent or same-day availability. Thanks — I have your details. The office will review and reach out shortly.","sent":true}
2026-06-22T14:23:42.549Z LOG [SMS webhook async AI continuation completed] {"leadId":"7e92a0c9-ba94-42c0-92ea-de2ffe076b43","phone":"+14783092224","providerMessageSid":"textbee:6a39456e77015dcde1b74576"}
2026-06-22T14:35:58.371Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T14:35:58.443Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T14:35:58.446Z LOG Recover Missed Call running on port 3000
2026-06-22T14:35:58.447Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T14:35:58.447Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:45:18.428Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T14:45:18.516Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T14:45:18.519Z LOG Recover Missed Call running on port 3000
2026-06-22T14:45:18.520Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T14:45:18.520Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:56:37.434Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T14:56:37.519Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T14:56:37.522Z LOG Recover Missed Call running on port 3000
2026-06-22T14:56:37.523Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T14:56:37.523Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T14:57:15.323Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:kZBGKDslas0_tnAJvs0VvmkxDO5VJQxGpP8Hfrek1WxN4ZO8TrAyKg","callLegId":"a85d9c0c-6e4a-11f1-b840-b202a694c429","callSessionId":"a85d9626-6e4a-11f1-b6f5-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T14:57:15.512Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T14:57:15.745Z LOG [Telnyx voice command ok: answer]
2026-06-22T14:57:15.746Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T14:57:15.747Z LOG [Missed-call recovery triggered] {"key":"a85d9626-6e4a-11f1-b6f5-b202a694c429:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T14:57:15.816Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T14:57:15.827Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:kZBGKDslas0_tnAJvs0VvmkxDO5VJQxGpP8Hfrek1WxN4ZO8TrAyKg","callLegId":"a85d9c0c-6e4a-11f1-b840-b202a694c429","callSessionId":"a85d9626-6e4a-11f1-b6f5-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T14:57:15.833Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:57:15.833Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T14:57:15.834Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a85d9626-6e4a-11f1-b6f5-b202a694c429:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T14:57:15.936Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T14:57:16.495Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:kZBGKDslas0_tnAJvs0VvmkxDO5VJQxGpP8Hfrek1WxN4ZO8TrAyKg","callLegId":"a85d9c0c-6e4a-11f1-b840-b202a694c429","callSessionId":"a85d9626-6e4a-11f1-b6f5-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T14:57:16.503Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:57:16.504Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T14:57:16.504Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a85d9626-6e4a-11f1-b6f5-b202a694c429:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T14:57:16.505Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T14:57:22.824Z LOG [Missed-call recovery SMS attempt] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T14:57:22.826Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T14:57:23.199Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a394d5477015dcde1b9deeb","recipientCount":1}}}
2026-06-22T14:57:23.204Z LOG [Missed-call recovery SMS sent] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a394d5477015dcde1b9deeb\",\"recipientCount\":1}}"}
2026-06-22T14:57:23.215Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T14:57:27.028Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:kZBGKDslas0_tnAJvs0VvmkxDO5VJQxGpP8Hfrek1WxN4ZO8TrAyKg","callLegId":"a85d9c0c-6e4a-11f1-b840-b202a694c429","callSessionId":"a85d9626-6e4a-11f1-b6f5-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T14:57:27.034Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:57:27.034Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T14:57:27.034Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a85d9626-6e4a-11f1-b6f5-b202a694c429:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T14:57:27.034Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T14:57:27.176Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T14:57:27.307Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:kZBGKDslas0_tnAJvs0VvmkxDO5VJQxGpP8Hfrek1WxN4ZO8TrAyKg","callLegId":"a85d9c0c-6e4a-11f1-b840-b202a694c429","callSessionId":"a85d9626-6e4a-11f1-b6f5-b202a694c429","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T14:57:27.315Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T14:57:27.315Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T14:57:27.315Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"a85d9626-6e4a-11f1-b6f5-b202a694c429:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T14:57:59.965Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:57:59.967Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have an urgent bee issue at 123 Main St Ann Arbor, MI","providerMessageSid":"textbee:6a394d7877015dcde1b9e808"}
2026-06-22T14:57:59.976Z LOG [Inbound SMS linked to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T14:57:59.987Z LOG [Incoming SMS saved to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","messageId":"95d5bf20-8bc9-4f71-b1b2-cc3bdf31b2cc","messageProviderSid":"textbee:6a394d7877015dcde1b9e808","mode":"webhook_fast_save"}
2026-06-22T14:58:00.001Z LOG [SMS cost guard disabled for testing] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:58:00.027Z LOG [Customer SMS reply attempt] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","messageLength":130}
2026-06-22T14:58:00.027Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":130}
2026-06-22T14:58:01.051Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a394d7977015dcde1b9e8a9","recipientCount":1}}}
2026-06-22T14:58:01.052Z LOG [Customer SMS reply sent] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"direct_business_emergency_rules_question","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a394d7977015dcde1b9e8a9\",\"recipientCount\":1}}"}
2026-06-22T14:58:01.066Z LOG [Direct business knowledge question handled] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","intent":"emergency_rules_question","inferredServiceType":"Stinging Insects","inferredUrgency":"Emergency / Safety Risk","inferredName":null,"inferredAddress":"123 Main St Ann Arbor, MI","inferredPropertyType":null,"replyPreview":"Metro Pest Control: The office can confirm urgent or same-day availability. Thanks — is this a residential or commercial property?","sent":true}
2026-06-22T14:58:01.068Z LOG [SMS webhook async AI continuation completed] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","providerMessageSid":"textbee:6a394d7877015dcde1b9e808"}
2026-06-22T14:58:21.046Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:58:21.047Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a394d8d77015dcde1b9ece1"}
2026-06-22T14:58:21.054Z LOG [Inbound SMS linked to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T14:58:21.062Z LOG [Incoming SMS saved to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","messageId":"177824cc-5ad1-4689-9fd8-e1ad9f094e4b","messageProviderSid":"textbee:6a394d8d77015dcde1b9ece1","mode":"webhook_fast_save"}
2026-06-22T14:58:21.132Z LOG [SMS cost guard disabled for testing] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:58:21.146Z LOG [Deterministic required-field reply captured] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","expectedField":"property_type","capturedValue":"Residential","hasRequiredLeadDetails":false}
2026-06-22T14:58:21.793Z LOG [Service area check] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-22T14:58:21.799Z LOG [Customer SMS reply attempt] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","messageLength":68}
2026-06-22T14:58:21.799Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-22T14:58:22.017Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a394d8e77015dcde1b9ed15","recipientCount":1}}}
2026-06-22T14:58:22.017Z LOG [Customer SMS reply sent] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"deterministic_property_type_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a394d8e77015dcde1b9ed15\",\"recipientCount\":1}}"}
2026-06-22T14:58:22.026Z LOG [SMS webhook async AI continuation completed] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","providerMessageSid":"textbee:6a394d8d77015dcde1b9ece1"}
2026-06-22T14:58:33.001Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T14:58:33.002Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a394d9977015dcde1b9efcb"}
2026-06-22T14:58:33.012Z LOG [Inbound SMS linked to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T14:58:33.021Z LOG [Incoming SMS saved to lead] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","messageId":"66675f70-9a7e-4c83-8126-c5ea175c5bef","messageProviderSid":"textbee:6a394d9977015dcde1b9efcb","mode":"webhook_fast_save"}
2026-06-22T14:58:33.030Z LOG [SMS cost guard disabled for testing] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T14:58:33.076Z LOG [Deterministic required-field reply captured] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":true}
2026-06-22T14:58:33.079Z LOG [Service area check] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-22T14:58:33.103Z LOG [Customer SMS reply attempt] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":95}
2026-06-22T14:58:33.104Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T14:58:33.297Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a394d9a77015dcde1b9eff1","recipientCount":1}}}
2026-06-22T14:58:33.299Z LOG [Customer SMS reply sent] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a394d9a77015dcde1b9eff1\",\"recipientCount\":1}}"}
2026-06-22T14:58:33.346Z LOG [Owner alert check] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T14:58:33.348Z LOG [Owner alert sending] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T14:58:33.350Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 123 Main St Ann ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T14:58:33.351Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":198}
2026-06-22T14:58:33.549Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a394d9a77015dcde1b9f01f","recipientCount":1}}}
2026-06-22T14:58:33.550Z LOG [Owner SMS TextBee result] accepted
2026-06-22T14:58:33.550Z LOG [Owner alert sms result] sent/accepted
2026-06-22T14:58:33.909Z LOG [Owner alert email result] sent/accepted
2026-06-22T14:58:33.916Z LOG [Owner alert completed] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T14:58:33.918Z LOG [SMS webhook async AI continuation completed] {"leadId":"be81a5b9-7a4c-45c5-b241-d83f588ab1ef","phone":"+14783092224","providerMessageSid":"textbee:6a394d9977015dcde1b9efcb"}
2026-06-22T15:16:54.238Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T15:16:54.335Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T15:16:54.337Z LOG Recover Missed Call running on port 3000
2026-06-22T15:16:54.337Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T15:16:54.337Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T15:17:47.238Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:3zALq_oP0GKEYCLastYhOa8HkRYkmYUnv-DxUQM74ZonSW2ciMf1Sw","callLegId":"86c92fb8-6e4d-11f1-9271-02420aef8da1","callSessionId":"86c9245a-6e4d-11f1-8b35-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T15:17:47.298Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T15:17:47.495Z LOG [Telnyx voice command ok: answer]
2026-06-22T15:17:47.495Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:17:47.496Z LOG [Missed-call recovery triggered] {"key":"86c9245a-6e4d-11f1-8b35-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:17:47.514Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T15:17:47.636Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:3zALq_oP0GKEYCLastYhOa8HkRYkmYUnv-DxUQM74ZonSW2ciMf1Sw","callLegId":"86c92fb8-6e4d-11f1-9271-02420aef8da1","callSessionId":"86c9245a-6e4d-11f1-8b35-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T15:17:47.645Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:17:47.646Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:17:47.646Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"86c9245a-6e4d-11f1-8b35-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:17:47.702Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T15:17:47.921Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:3zALq_oP0GKEYCLastYhOa8HkRYkmYUnv-DxUQM74ZonSW2ciMf1Sw","callLegId":"86c92fb8-6e4d-11f1-9271-02420aef8da1","callSessionId":"86c9245a-6e4d-11f1-8b35-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T15:17:47.929Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:17:47.930Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:17:47.930Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"86c9245a-6e4d-11f1-8b35-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:17:47.930Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:17:54.526Z LOG [Missed-call recovery SMS attempt] {"leadId":"bb02b493-dd06-46e0-8aa0-691cfc576b42","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T15:17:54.527Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T15:17:54.741Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39522377015dcde1bbee52","recipientCount":1}}}
2026-06-22T15:17:54.748Z LOG [Missed-call recovery SMS sent] {"leadId":"bb02b493-dd06-46e0-8aa0-691cfc576b42","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39522377015dcde1bbee52\",\"recipientCount\":1}}"}
2026-06-22T15:17:54.766Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"bb02b493-dd06-46e0-8aa0-691cfc576b42","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T15:17:58.504Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:3zALq_oP0GKEYCLastYhOa8HkRYkmYUnv-DxUQM74ZonSW2ciMf1Sw","callLegId":"86c92fb8-6e4d-11f1-9271-02420aef8da1","callSessionId":"86c9245a-6e4d-11f1-8b35-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T15:17:58.513Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:17:58.513Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:17:58.513Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"86c9245a-6e4d-11f1-8b35-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:17:58.514Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:17:58.608Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T15:17:58.696Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:3zALq_oP0GKEYCLastYhOa8HkRYkmYUnv-DxUQM74ZonSW2ciMf1Sw","callLegId":"86c92fb8-6e4d-11f1-9271-02420aef8da1","callSessionId":"86c9245a-6e4d-11f1-8b35-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T15:17:58.706Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:17:58.706Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T15:17:58.706Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"86c9245a-6e4d-11f1-8b35-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T15:35:41.830Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T15:35:41.845Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T15:35:41.847Z LOG Recover Missed Call running on port 3000
2026-06-22T15:35:41.914Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T15:35:41.914Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T15:36:04.592Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:FFue9nDIpQhbQefEMQ3GuwcHRi1663pTnHvpaM_5Ewp-1Zahi6hR9w","callLegId":"148ef894-6e50-11f1-ae8e-c23d774763a2","callSessionId":"148eeb1a-6e50-11f1-8cd4-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T15:36:04.670Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T15:36:05.054Z LOG [Telnyx voice command ok: answer]
2026-06-22T15:36:05.055Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:36:05.056Z LOG [Missed-call recovery triggered] {"key":"148eeb1a-6e50-11f1-8cd4-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:36:05.082Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T15:36:05.362Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:FFue9nDIpQhbQefEMQ3GuwcHRi1663pTnHvpaM_5Ewp-1Zahi6hR9w","callLegId":"148ef894-6e50-11f1-ae8e-c23d774763a2","callSessionId":"148eeb1a-6e50-11f1-8cd4-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T15:36:05.371Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:36:05.371Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:36:05.372Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"148eeb1a-6e50-11f1-8cd4-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:36:05.535Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T15:36:06.454Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:FFue9nDIpQhbQefEMQ3GuwcHRi1663pTnHvpaM_5Ewp-1Zahi6hR9w","callLegId":"148ef894-6e50-11f1-ae8e-c23d774763a2","callSessionId":"148eeb1a-6e50-11f1-8cd4-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T15:36:06.465Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:36:06.466Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:36:06.466Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"148eeb1a-6e50-11f1-8cd4-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:36:06.466Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:36:12.091Z LOG [Missed-call recovery SMS attempt] {"leadId":"83c89043-5262-43b0-9d23-27f6dbcfc0e7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T15:36:12.092Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T15:36:12.463Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39566d77015dcde1bcb67f","recipientCount":1}}}
2026-06-22T15:36:12.471Z LOG [Missed-call recovery SMS sent] {"leadId":"83c89043-5262-43b0-9d23-27f6dbcfc0e7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39566d77015dcde1bcb67f\",\"recipientCount\":1}}"}
2026-06-22T15:36:12.500Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"83c89043-5262-43b0-9d23-27f6dbcfc0e7","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T15:36:16.954Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:FFue9nDIpQhbQefEMQ3GuwcHRi1663pTnHvpaM_5Ewp-1Zahi6hR9w","callLegId":"148ef894-6e50-11f1-ae8e-c23d774763a2","callSessionId":"148eeb1a-6e50-11f1-8cd4-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T15:36:16.966Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:36:16.967Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:36:16.967Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"148eeb1a-6e50-11f1-8cd4-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:36:16.967Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:36:17.185Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T15:36:17.413Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:FFue9nDIpQhbQefEMQ3GuwcHRi1663pTnHvpaM_5Ewp-1Zahi6hR9w","callLegId":"148ef894-6e50-11f1-ae8e-c23d774763a2","callSessionId":"148eeb1a-6e50-11f1-8cd4-c23d774763a2","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T15:36:17.425Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:36:17.425Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T15:36:17.426Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"148eeb1a-6e50-11f1-8cd4-c23d774763a2:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T15:50:40.335Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T15:50:40.423Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T15:50:40.425Z LOG Recover Missed Call running on port 3000
2026-06-22T15:50:40.425Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T15:50:40.426Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T15:51:46.355Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:eOfAMo-pMh3WlLaYPI6vxKZm1K49nun5FCiHEsw0shwi-mpP9t_IhA","callLegId":"4606f5a0-6e52-11f1-9d78-02420aef3f20","callSessionId":"4606f0dc-6e52-11f1-ba29-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T15:51:46.411Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T15:51:46.823Z LOG [Telnyx voice command ok: answer]
2026-06-22T15:51:46.824Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:51:46.825Z LOG [Missed-call recovery triggered] {"key":"4606f0dc-6e52-11f1-ba29-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T15:51:46.840Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T15:51:47.058Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:eOfAMo-pMh3WlLaYPI6vxKZm1K49nun5FCiHEsw0shwi-mpP9t_IhA","callLegId":"4606f5a0-6e52-11f1-9d78-02420aef3f20","callSessionId":"4606f0dc-6e52-11f1-ba29-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T15:51:47.064Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:51:47.065Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:51:47.065Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4606f0dc-6e52-11f1-ba29-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T15:51:47.237Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T15:51:47.808Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:eOfAMo-pMh3WlLaYPI6vxKZm1K49nun5FCiHEsw0shwi-mpP9t_IhA","callLegId":"4606f5a0-6e52-11f1-9d78-02420aef3f20","callSessionId":"4606f0dc-6e52-11f1-ba29-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T15:51:47.816Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:51:47.817Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:51:47.817Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4606f0dc-6e52-11f1-ba29-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T15:51:47.817Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:51:53.850Z LOG [Missed-call recovery SMS attempt] {"leadId":"e6138d71-d62c-4486-b732-c9c8af12a4ac","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T15:51:53.851Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T15:51:54.063Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a395a1a77015dcde1bd7a1d","recipientCount":1}}}
2026-06-22T15:51:54.069Z LOG [Missed-call recovery SMS sent] {"leadId":"e6138d71-d62c-4486-b732-c9c8af12a4ac","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a395a1a77015dcde1bd7a1d\",\"recipientCount\":1}}"}
2026-06-22T15:51:54.081Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"e6138d71-d62c-4486-b732-c9c8af12a4ac","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T15:51:58.386Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:eOfAMo-pMh3WlLaYPI6vxKZm1K49nun5FCiHEsw0shwi-mpP9t_IhA","callLegId":"4606f5a0-6e52-11f1-9d78-02420aef3f20","callSessionId":"4606f0dc-6e52-11f1-ba29-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T15:51:58.393Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:51:58.393Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:51:58.393Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4606f0dc-6e52-11f1-ba29-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T15:51:58.393Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T15:51:58.613Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T15:51:58.836Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:eOfAMo-pMh3WlLaYPI6vxKZm1K49nun5FCiHEsw0shwi-mpP9t_IhA","callLegId":"4606f5a0-6e52-11f1-9d78-02420aef3f20","callSessionId":"4606f0dc-6e52-11f1-ba29-02420aef3f20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T15:51:58.845Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T15:51:58.845Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T15:51:58.845Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4606f0dc-6e52-11f1-ba29-02420aef3f20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:00:21.928Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T16:00:21.943Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T16:00:21.945Z LOG Recover Missed Call running on port 3000
2026-06-22T16:00:21.945Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T16:00:21.945Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T16:00:37.906Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:H2Ves-MGRoXI5M4PhT_IhF_Gfm3-Y2BiwfejVN6DnM40DjscTHJ0kg","callLegId":"82c6f3fe-6e53-11f1-ac5f-02420aef9920","callSessionId":"82c6e756-6e53-11f1-84c9-02420aef9920","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:00:37.961Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:00:38.612Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:00:38.613Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:00:38.614Z LOG [Missed-call recovery triggered] {"key":"82c6e756-6e53-11f1-84c9-02420aef9920:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:00:38.636Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:00:39.023Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:H2Ves-MGRoXI5M4PhT_IhF_Gfm3-Y2BiwfejVN6DnM40DjscTHJ0kg","callLegId":"82c6f3fe-6e53-11f1-ac5f-02420aef9920","callSessionId":"82c6e756-6e53-11f1-84c9-02420aef9920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:00:39.036Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:00:39.036Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:00:39.036Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"82c6e756-6e53-11f1-84c9-02420aef9920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:00:39.181Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:00:40.338Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:H2Ves-MGRoXI5M4PhT_IhF_Gfm3-Y2BiwfejVN6DnM40DjscTHJ0kg","callLegId":"82c6f3fe-6e53-11f1-ac5f-02420aef9920","callSessionId":"82c6e756-6e53-11f1-84c9-02420aef9920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:00:40.349Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:00:40.350Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:00:40.350Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"82c6e756-6e53-11f1-84c9-02420aef9920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:00:40.350Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:00:45.647Z LOG [Missed-call recovery SMS attempt] {"leadId":"dc546c1e-e92b-4dd2-b66c-08ca47d80e34","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:00:45.648Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:00:50.822Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:H2Ves-MGRoXI5M4PhT_IhF_Gfm3-Y2BiwfejVN6DnM40DjscTHJ0kg","callLegId":"82c6f3fe-6e53-11f1-ac5f-02420aef9920","callSessionId":"82c6e756-6e53-11f1-84c9-02420aef9920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:00:50.829Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:00:50.829Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:00:50.830Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"82c6e756-6e53-11f1-84c9-02420aef9920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:00:50.830Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:00:51.258Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:00:51.558Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:H2Ves-MGRoXI5M4PhT_IhF_Gfm3-Y2BiwfejVN6DnM40DjscTHJ0kg","callLegId":"82c6f3fe-6e53-11f1-ac5f-02420aef9920","callSessionId":"82c6e756-6e53-11f1-84c9-02420aef9920","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:00:51.568Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:00:51.569Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:00:51.569Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"82c6e756-6e53-11f1-84c9-02420aef9920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:00:54.987Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a395c3577015dcde1be81cb","recipientCount":1}}}
2026-06-22T16:00:54.993Z LOG [Missed-call recovery SMS sent] {"leadId":"dc546c1e-e92b-4dd2-b66c-08ca47d80e34","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a395c3577015dcde1be81cb\",\"recipientCount\":1}}"}
2026-06-22T16:00:55.051Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"dc546c1e-e92b-4dd2-b66c-08ca47d80e34","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:01:59.643Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T16:01:59.728Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T16:01:59.731Z LOG Recover Missed Call running on port 3000
2026-06-22T16:01:59.731Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T16:01:59.732Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T16:02:17.667Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:9JwfUHOl0QuaXHcJPzII08LUEwvwJ99-nLqhcUA1EO61d3LZvu5ztQ","callLegId":"be7ac236-6e53-11f1-8f18-02420aef8da1","callSessionId":"be7ab692-6e53-11f1-9fb0-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:02:17.723Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:02:17.901Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:02:17.901Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:02:17.902Z LOG [Missed-call recovery triggered] {"key":"be7ab692-6e53-11f1-9fb0-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:02:17.922Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:02:17.960Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:9JwfUHOl0QuaXHcJPzII08LUEwvwJ99-nLqhcUA1EO61d3LZvu5ztQ","callLegId":"be7ac236-6e53-11f1-8f18-02420aef8da1","callSessionId":"be7ab692-6e53-11f1-9fb0-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:02:17.969Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:02:17.970Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:02:17.970Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"be7ab692-6e53-11f1-9fb0-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:02:18.093Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:02:18.307Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:9JwfUHOl0QuaXHcJPzII08LUEwvwJ99-nLqhcUA1EO61d3LZvu5ztQ","callLegId":"be7ac236-6e53-11f1-8f18-02420aef8da1","callSessionId":"be7ab692-6e53-11f1-9fb0-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:02:18.316Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:02:18.317Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:02:18.317Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"be7ab692-6e53-11f1-9fb0-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:02:18.317Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:02:24.933Z LOG [Missed-call recovery SMS attempt] {"leadId":"85a89a2f-00db-4515-8802-5fbc115961d4","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:02:24.935Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:02:28.852Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:9JwfUHOl0QuaXHcJPzII08LUEwvwJ99-nLqhcUA1EO61d3LZvu5ztQ","callLegId":"be7ac236-6e53-11f1-8f18-02420aef8da1","callSessionId":"be7ab692-6e53-11f1-9fb0-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:02:28.859Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:02:28.860Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:02:28.860Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"be7ab692-6e53-11f1-9fb0-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:02:28.860Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:02:28.956Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:02:29.033Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:9JwfUHOl0QuaXHcJPzII08LUEwvwJ99-nLqhcUA1EO61d3LZvu5ztQ","callLegId":"be7ac236-6e53-11f1-8f18-02420aef8da1","callSessionId":"be7ab692-6e53-11f1-9fb0-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:02:29.043Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:02:29.044Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:02:29.044Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"be7ab692-6e53-11f1-9fb0-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:02:31.053Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a395c9477015dcde1bed721","recipientCount":1}}}
2026-06-22T16:02:31.132Z LOG [Missed-call recovery SMS sent] {"leadId":"85a89a2f-00db-4515-8802-5fbc115961d4","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a395c9477015dcde1bed721\",\"recipientCount\":1}}"}
2026-06-22T16:02:31.211Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"85a89a2f-00db-4515-8802-5fbc115961d4","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:03:30.207Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:AH1fXPbrkPah5hXQ81MG8CAga8Zg2VUkPyXpLJa8dx-wFILycrNcxg","callLegId":"e9a8e4d8-6e53-11f1-946f-eabbb84a066f","callSessionId":"e9a8d7c2-6e53-11f1-b40a-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:03:30.216Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+14783092224","to":"+17342647770"}
2026-06-22T16:03:50.547Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:AH1fXPbrkPah5hXQ81MG8CAga8Zg2VUkPyXpLJa8dx-wFILycrNcxg","callLegId":"e9a8e4d8-6e53-11f1-946f-eabbb84a066f","callSessionId":"e9a8d7c2-6e53-11f1-b40a-eabbb84a066f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:03:50.547Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-22T16:03:56.496Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Y2TKyKOMmfwI7EESWxNTq4OznDTkE2NaVahJhJWBQePaMWSrx_umIQ","callLegId":"f918c410-6e53-11f1-ad08-02420aef95a1","callSessionId":"f918bbdc-6e53-11f1-ac2d-02420aef95a1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:03:56.504Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+14783092224","to":"+17342647770"}
2026-06-22T16:04:10.075Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:Y2TKyKOMmfwI7EESWxNTq4OznDTkE2NaVahJhJWBQePaMWSrx_umIQ","callLegId":"f918c410-6e53-11f1-ad08-02420aef95a1","callSessionId":"f918bbdc-6e53-11f1-ac2d-02420aef95a1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:04:10.075Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-22T16:04:37.771Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:FuXN86v4r4YlPie2OMJZagCR7N5IHjkTwEjUDMlgaMk4Agj5Nph5Ng","callLegId":"120cce8a-6e54-11f1-a09f-7a024d2b2c31","callSessionId":"120cc944-6e54-11f1-a9df-7a024d2b2c31","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:04:37.783Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:04:37.982Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:04:37.982Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:04:37.983Z LOG [Missed-call recovery triggered] {"key":"120cc944-6e54-11f1-a9df-7a024d2b2c31:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:04:37.993Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:04:38.087Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:FuXN86v4r4YlPie2OMJZagCR7N5IHjkTwEjUDMlgaMk4Agj5Nph5Ng","callLegId":"120cce8a-6e54-11f1-a09f-7a024d2b2c31","callSessionId":"120cc944-6e54-11f1-a9df-7a024d2b2c31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:04:38.095Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:04:38.096Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:04:38.096Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"120cc944-6e54-11f1-a9df-7a024d2b2c31:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:04:38.173Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:04:38.710Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:FuXN86v4r4YlPie2OMJZagCR7N5IHjkTwEjUDMlgaMk4Agj5Nph5Ng","callLegId":"120cce8a-6e54-11f1-a09f-7a024d2b2c31","callSessionId":"120cc944-6e54-11f1-a9df-7a024d2b2c31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:04:38.718Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:04:38.719Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:04:38.719Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"120cc944-6e54-11f1-a9df-7a024d2b2c31:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:04:38.719Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:04:45.001Z LOG [Initial missed-call SMS duplicate suppressed before send] {"leadId":"85a89a2f-00db-4515-8802-5fbc115961d4","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","duplicateWindowSeconds":600}
2026-06-22T16:04:49.272Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:FuXN86v4r4YlPie2OMJZagCR7N5IHjkTwEjUDMlgaMk4Agj5Nph5Ng","callLegId":"120cce8a-6e54-11f1-a09f-7a024d2b2c31","callSessionId":"120cc944-6e54-11f1-a9df-7a024d2b2c31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:04:49.280Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:04:49.280Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:04:49.280Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"120cc944-6e54-11f1-a9df-7a024d2b2c31:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:04:49.280Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:04:49.424Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:04:49.514Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:FuXN86v4r4YlPie2OMJZagCR7N5IHjkTwEjUDMlgaMk4Agj5Nph5Ng","callLegId":"120cce8a-6e54-11f1-a09f-7a024d2b2c31","callSessionId":"120cc944-6e54-11f1-a9df-7a024d2b2c31","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:04:49.523Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:04:49.523Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:04:49.523Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"120cc944-6e54-11f1-a9df-7a024d2b2c31:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:23:17.241Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:pqNLYZq3WhKyqotiCCm9jgKnpUv2d6UxiCfKMSlPGnFsvkAOOYNmaA","callLegId":"ad59b568-6e56-11f1-bc31-02420aef8da1","callSessionId":"ad59ab22-6e56-11f1-b312-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:23:17.266Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:23:17.411Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:23:17.411Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:23:17.411Z LOG [Missed-call recovery triggered] {"key":"ad59ab22-6e56-11f1-b312-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:23:17.424Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:23:17.506Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:pqNLYZq3WhKyqotiCCm9jgKnpUv2d6UxiCfKMSlPGnFsvkAOOYNmaA","callLegId":"ad59b568-6e56-11f1-bc31-02420aef8da1","callSessionId":"ad59ab22-6e56-11f1-b312-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:23:17.512Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:23:17.512Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:23:17.513Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ad59ab22-6e56-11f1-b312-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:23:17.572Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:23:17.793Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:pqNLYZq3WhKyqotiCCm9jgKnpUv2d6UxiCfKMSlPGnFsvkAOOYNmaA","callLegId":"ad59b568-6e56-11f1-bc31-02420aef8da1","callSessionId":"ad59ab22-6e56-11f1-b312-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:23:17.800Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:23:17.800Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:23:17.800Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ad59ab22-6e56-11f1-b312-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:23:17.801Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:23:24.433Z LOG [Missed-call recovery SMS attempt] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:23:24.434Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:23:24.704Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39617d77015dcde1c0c06f","recipientCount":1}}}
2026-06-22T16:23:24.714Z LOG [Missed-call recovery SMS sent] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39617d77015dcde1c0c06f\",\"recipientCount\":1}}"}
2026-06-22T16:23:24.726Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:23:28.337Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:pqNLYZq3WhKyqotiCCm9jgKnpUv2d6UxiCfKMSlPGnFsvkAOOYNmaA","callLegId":"ad59b568-6e56-11f1-bc31-02420aef8da1","callSessionId":"ad59ab22-6e56-11f1-b312-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:23:28.346Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:23:28.346Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:23:28.346Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ad59ab22-6e56-11f1-b312-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:23:28.346Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:23:28.460Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:23:28.542Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:pqNLYZq3WhKyqotiCCm9jgKnpUv2d6UxiCfKMSlPGnFsvkAOOYNmaA","callLegId":"ad59b568-6e56-11f1-bc31-02420aef8da1","callSessionId":"ad59ab22-6e56-11f1-b312-02420aef8da1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:23:28.549Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:23:28.549Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:23:28.550Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ad59ab22-6e56-11f1-b312-02420aef8da1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:24:04.394Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T16:24:04.399Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Have massive amount of bees around the house","providerMessageSid":"textbee:6a3961a477015dcde1c0c9ea"}
2026-06-22T16:24:04.409Z LOG [Inbound SMS linked to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T16:24:04.414Z LOG [Incoming SMS saved to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","messageId":"fcde659b-d05a-420a-9e74-2cf9d4150b00","messageProviderSid":"textbee:6a3961a477015dcde1c0c9ea","mode":"webhook_fast_save"}
2026-06-22T16:24:04.425Z LOG [SMS cost guard disabled for testing] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T16:24:04.446Z LOG [Customer SMS reply attempt] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":68}
2026-06-22T16:24:04.446Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-22T16:24:04.676Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3961a577015dcde1c0ca79","recipientCount":1}}}
2026-06-22T16:24:04.676Z LOG [Customer SMS reply sent] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3961a577015dcde1c0ca79\",\"recipientCount\":1}}"}
2026-06-22T16:24:04.684Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":false,"capturedAddress":false,"capturedProperty":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-22T16:24:04.685Z LOG [SMS webhook async AI continuation completed] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","providerMessageSid":"textbee:6a3961a477015dcde1c0c9ea"}
2026-06-22T16:24:18.081Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T16:24:18.082Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a3961b277015dcde1c0cde4"}
2026-06-22T16:24:18.092Z LOG [Inbound SMS linked to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T16:24:18.109Z LOG [Incoming SMS saved to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","messageId":"cbdcb974-e18d-4e17-803f-a32dedbcf99f","messageProviderSid":"textbee:6a3961b277015dcde1c0cde4","mode":"webhook_fast_save"}
2026-06-22T16:24:18.117Z LOG [SMS cost guard disabled for testing] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T16:24:18.161Z LOG [Deterministic required-field reply captured] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-22T16:24:18.167Z LOG [Customer SMS reply attempt] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-22T16:24:18.167Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-22T16:24:18.365Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3961b377015dcde1c0ce0a","recipientCount":1}}}
2026-06-22T16:24:18.365Z LOG [Customer SMS reply sent] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3961b377015dcde1c0ce0a\",\"recipientCount\":1}}"}
2026-06-22T16:24:18.373Z LOG [SMS webhook async AI continuation completed] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","providerMessageSid":"textbee:6a3961b277015dcde1c0cde4"}
2026-06-22T16:24:35.503Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T16:24:35.504Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a3961c477015dcde1c0cff9"}
2026-06-22T16:24:35.513Z LOG [Inbound SMS linked to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T16:24:35.543Z LOG [Incoming SMS saved to lead] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","messageId":"b0d1142f-3519-4f3c-b7be-3b006fd7260f","messageProviderSid":"textbee:6a3961c477015dcde1c0cff9","mode":"webhook_fast_save"}
2026-06-22T16:24:35.553Z LOG [SMS cost guard disabled for testing] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T16:24:35.564Z LOG [Service area check] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T16:24:35.569Z LOG [Customer SMS reply attempt] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-22T16:24:35.569Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T16:24:35.763Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3961c477015dcde1c0d01f","recipientCount":1}}}
2026-06-22T16:24:35.763Z LOG [Customer SMS reply sent] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3961c477015dcde1c0d01f\",\"recipientCount\":1}}"}
2026-06-22T16:24:35.794Z LOG [Owner alert check] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T16:24:37.863Z LOG [Owner alert sending] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T16:24:37.866Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 33536 Unicorn Ct","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T16:24:37.867Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":438}
2026-06-22T16:24:38.085Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3961c777015dcde1c0d0e1","recipientCount":1}}}
2026-06-22T16:24:38.085Z LOG [Owner SMS TextBee result] accepted
2026-06-22T16:24:38.085Z LOG [Owner alert sms result] sent/accepted
2026-06-22T16:24:38.390Z LOG [Owner alert email result] sent/accepted
2026-06-22T16:24:38.403Z LOG [Owner alert completed] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T16:24:38.403Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-22T16:24:38.405Z LOG [SMS webhook async AI continuation completed] {"leadId":"39c9056b-bfb3-4c4d-8836-06a9d16d3ae7","phone":"+14783092224","providerMessageSid":"textbee:6a3961c477015dcde1c0cff9"}
2026-06-22T16:26:09.395Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:wAmsGVMiIV4ktjPvQSThnxKyqfUW37W1RusXFyjh046XPfjti0CpCA","callLegId":"13b6c616-6e57-11f1-b552-02420aef2720","callSessionId":"13b6ba0e-6e57-11f1-bf71-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:26:09.417Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:26:09.789Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:26:09.789Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:26:09.789Z LOG [Missed-call recovery triggered] {"key":"13b6ba0e-6e57-11f1-bf71-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:26:09.799Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:26:10.247Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:wAmsGVMiIV4ktjPvQSThnxKyqfUW37W1RusXFyjh046XPfjti0CpCA","callLegId":"13b6c616-6e57-11f1-b552-02420aef2720","callSessionId":"13b6ba0e-6e57-11f1-bf71-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:26:10.253Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:26:10.253Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:26:10.254Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"13b6ba0e-6e57-11f1-bf71-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:26:10.396Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:26:11.156Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:wAmsGVMiIV4ktjPvQSThnxKyqfUW37W1RusXFyjh046XPfjti0CpCA","callLegId":"13b6c616-6e57-11f1-b552-02420aef2720","callSessionId":"13b6ba0e-6e57-11f1-bf71-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:26:11.262Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:26:11.262Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:26:11.262Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"13b6ba0e-6e57-11f1-bf71-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:26:11.262Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:26:16.808Z LOG [Missed-call recovery SMS attempt] {"leadId":"1bd21394-879e-4b15-808b-9378a7f7e2bb","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:26:16.808Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:26:16.996Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39622977015dcde1c0e07e","recipientCount":1}}}
2026-06-22T16:26:17.001Z LOG [Missed-call recovery SMS sent] {"leadId":"1bd21394-879e-4b15-808b-9378a7f7e2bb","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39622977015dcde1c0e07e\",\"recipientCount\":1}}"}
2026-06-22T16:26:17.008Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"1bd21394-879e-4b15-808b-9378a7f7e2bb","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:26:21.625Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:wAmsGVMiIV4ktjPvQSThnxKyqfUW37W1RusXFyjh046XPfjti0CpCA","callLegId":"13b6c616-6e57-11f1-b552-02420aef2720","callSessionId":"13b6ba0e-6e57-11f1-bf71-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:26:21.632Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:26:21.632Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:26:21.632Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"13b6ba0e-6e57-11f1-bf71-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:26:21.632Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:26:21.923Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:26:22.210Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:wAmsGVMiIV4ktjPvQSThnxKyqfUW37W1RusXFyjh046XPfjti0CpCA","callLegId":"13b6c616-6e57-11f1-b552-02420aef2720","callSessionId":"13b6ba0e-6e57-11f1-bf71-02420aef2720","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:26:22.217Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:26:22.217Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:26:22.217Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"13b6ba0e-6e57-11f1-bf71-02420aef2720:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:45:29.672Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:gWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ","callLegId":"c75a0528-6e59-11f1-b77e-bebe5dff5faa","callSessionId":"c759f880-6e59-11f1-99be-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:45:29.697Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:45:30.028Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:45:30.028Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:45:30.029Z LOG [Missed-call recovery triggered] {"key":"c759f880-6e59-11f1-99be-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:45:30.043Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:45:30.322Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:gWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ","callLegId":"c75a0528-6e59-11f1-b77e-bebe5dff5faa","callSessionId":"c759f880-6e59-11f1-99be-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:45:30.328Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:45:30.329Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:45:30.329Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c759f880-6e59-11f1-99be-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:45:30.493Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:45:31.181Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:gWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ","callLegId":"c75a0528-6e59-11f1-b77e-bebe5dff5faa","callSessionId":"c759f880-6e59-11f1-99be-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:45:31.190Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:45:31.190Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:45:31.191Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c759f880-6e59-11f1-99be-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:45:31.191Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:45:32.204Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:gWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ","callLegId":"c75a0528-6e59-11f1-b77e-bebe5dff5faa","callSessionId":"c759f880-6e59-11f1-99be-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:45:32.210Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:45:32.210Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:45:32.210Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c759f880-6e59-11f1-99be-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:45:32.211Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:45:32.221Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:gWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ","callLegId":"c75a0528-6e59-11f1-b77e-bebe5dff5faa","callSessionId":"c759f880-6e59-11f1-99be-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:45:32.227Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:45:32.227Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:45:32.227Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"c759f880-6e59-11f1-99be-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:45:32.327Z ERROR [Telnyx API error] {"path":"/calls/v3%3AgWfQZKgnMIDNTmXyh66Qxq0lBPNF9w2ToKlCX2e8chHi7FbZN96AdQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-22T16:45:32.331Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-22T16:45:37.052Z LOG [Missed-call recovery SMS attempt] {"leadId":"72ad7080-a36a-4dd4-8db1-0744270dbb9f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:45:37.052Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:45:37.383Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3966b277015dcde1c242c2","recipientCount":1}}}
2026-06-22T16:45:37.390Z LOG [Missed-call recovery SMS sent] {"leadId":"72ad7080-a36a-4dd4-8db1-0744270dbb9f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3966b277015dcde1c242c2\",\"recipientCount\":1}}"}
2026-06-22T16:45:37.398Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"72ad7080-a36a-4dd4-8db1-0744270dbb9f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:46:04.037Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T16:46:04.133Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T16:46:04.135Z LOG Recover Missed Call running on port 3000
2026-06-22T16:46:04.135Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T16:46:04.136Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T16:47:22.023Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T16:47:22.036Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T16:47:22.037Z LOG Recover Missed Call running on port 3000
2026-06-22T16:47:22.038Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T16:47:22.038Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T16:47:34.106Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Q9aPq3EAoeGrPzqQxOSU2FjmdkmBQd3Wwjs-CfSbzNP-ZjRS9FA7zw","callLegId":"115e8144-6e5a-11f1-bb82-bebe5dff5faa","callSessionId":"115e794c-6e5a-11f1-993d-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:47:34.246Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:47:34.571Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:47:34.571Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:47:34.572Z LOG [Missed-call recovery triggered] {"key":"115e794c-6e5a-11f1-993d-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:47:34.593Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:47:34.852Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Q9aPq3EAoeGrPzqQxOSU2FjmdkmBQd3Wwjs-CfSbzNP-ZjRS9FA7zw","callLegId":"115e8144-6e5a-11f1-bb82-bebe5dff5faa","callSessionId":"115e794c-6e5a-11f1-993d-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:47:34.859Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:47:34.859Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:47:34.859Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"115e794c-6e5a-11f1-993d-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:47:34.999Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:47:35.736Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Q9aPq3EAoeGrPzqQxOSU2FjmdkmBQd3Wwjs-CfSbzNP-ZjRS9FA7zw","callLegId":"115e8144-6e5a-11f1-bb82-bebe5dff5faa","callSessionId":"115e794c-6e5a-11f1-993d-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:47:35.743Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:47:35.744Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:47:35.744Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"115e794c-6e5a-11f1-993d-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:47:35.744Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:47:41.604Z LOG [Missed-call recovery SMS attempt] {"leadId":"20bcce75-a1fc-472c-99a5-16dab604a446","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:47:41.605Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":98}
2026-06-22T16:47:41.815Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39672e77015dcde1c2535d","recipientCount":1}}}
2026-06-22T16:47:41.821Z LOG [Missed-call recovery SMS sent] {"leadId":"20bcce75-a1fc-472c-99a5-16dab604a446","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39672e77015dcde1c2535d\",\"recipientCount\":1}}"}
2026-06-22T16:47:41.831Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"20bcce75-a1fc-472c-99a5-16dab604a446","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:47:46.157Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Q9aPq3EAoeGrPzqQxOSU2FjmdkmBQd3Wwjs-CfSbzNP-ZjRS9FA7zw","callLegId":"115e8144-6e5a-11f1-bb82-bebe5dff5faa","callSessionId":"115e794c-6e5a-11f1-993d-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:47:46.168Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:47:46.168Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:47:46.168Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"115e794c-6e5a-11f1-993d-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:47:46.168Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:47:46.323Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:47:46.609Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Q9aPq3EAoeGrPzqQxOSU2FjmdkmBQd3Wwjs-CfSbzNP-ZjRS9FA7zw","callLegId":"115e8144-6e5a-11f1-bb82-bebe5dff5faa","callSessionId":"115e794c-6e5a-11f1-993d-bebe5dff5faa","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:47:46.616Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:47:46.616Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:47:46.616Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"115e794c-6e5a-11f1-993d-bebe5dff5faa:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:55:44.921Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T16:55:45.018Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T16:55:45.020Z LOG Recover Missed Call running on port 3000
2026-06-22T16:55:45.025Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T16:55:45.025Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T16:56:05.926Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:pKZFrzw8XwYnkI4Pz0zRbn1FVXafoo1LSs9WzBrPblqL_Wh7DcMhZQ","callLegId":"42ba03ca-6e5b-11f1-82e7-02420aefb020","callSessionId":"42b9f736-6e5b-11f1-a7c2-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T16:56:05.987Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T16:56:06.171Z LOG [Telnyx voice command ok: answer]
2026-06-22T16:56:06.171Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:56:06.172Z LOG [Missed-call recovery triggered] {"key":"42b9f736-6e5b-11f1-a7c2-02420aefb020:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T16:56:06.189Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T16:56:06.231Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:pKZFrzw8XwYnkI4Pz0zRbn1FVXafoo1LSs9WzBrPblqL_Wh7DcMhZQ","callLegId":"42ba03ca-6e5b-11f1-82e7-02420aefb020","callSessionId":"42b9f736-6e5b-11f1-a7c2-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T16:56:06.239Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:56:06.240Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:56:06.240Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"42b9f736-6e5b-11f1-a7c2-02420aefb020:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T16:56:06.323Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T16:56:06.539Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:pKZFrzw8XwYnkI4Pz0zRbn1FVXafoo1LSs9WzBrPblqL_Wh7DcMhZQ","callLegId":"42ba03ca-6e5b-11f1-82e7-02420aefb020","callSessionId":"42b9f736-6e5b-11f1-a7c2-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T16:56:06.548Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:56:06.549Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:56:06.549Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"42b9f736-6e5b-11f1-a7c2-02420aefb020:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T16:56:06.550Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:56:13.197Z LOG [Missed-call recovery SMS attempt] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T16:56:13.198Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T16:56:13.454Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39692e77015dcde1c2a3e3","recipientCount":1}}}
2026-06-22T16:56:13.460Z LOG [Missed-call recovery SMS sent] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39692e77015dcde1c2a3e3\",\"recipientCount\":1}}"}
2026-06-22T16:56:13.470Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T16:56:17.090Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:pKZFrzw8XwYnkI4Pz0zRbn1FVXafoo1LSs9WzBrPblqL_Wh7DcMhZQ","callLegId":"42ba03ca-6e5b-11f1-82e7-02420aefb020","callSessionId":"42b9f736-6e5b-11f1-a7c2-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T16:56:17.099Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:56:17.100Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:56:17.100Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"42b9f736-6e5b-11f1-a7c2-02420aefb020:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T16:56:17.101Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T16:56:17.186Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T16:56:17.348Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:pKZFrzw8XwYnkI4Pz0zRbn1FVXafoo1LSs9WzBrPblqL_Wh7DcMhZQ","callLegId":"42ba03ca-6e5b-11f1-82e7-02420aefb020","callSessionId":"42b9f736-6e5b-11f1-a7c2-02420aefb020","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T16:56:17.355Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T16:56:17.355Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:56:17.356Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"42b9f736-6e5b-11f1-a7c2-02420aefb020:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T16:58:23.033Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T16:58:23.037Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"We have bees, Chuck and 123 Main St, Garden City, MI","providerMessageSid":"textbee:6a3969af77015dcde1c2b507"}
2026-06-22T16:58:23.045Z LOG [Inbound SMS linked to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T16:58:23.064Z LOG [Incoming SMS saved to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","messageId":"8bb4ef8d-7077-4309-b705-ec7d7b6188dd","messageProviderSid":"textbee:6a3969af77015dcde1c2b507","mode":"webhook_fast_save"}
2026-06-22T16:58:23.085Z LOG [SMS cost guard disabled for testing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T16:58:23.098Z LOG [Service area check] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T16:58:23.102Z LOG [Customer SMS reply attempt] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-22T16:58:23.103Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-22T16:58:23.358Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3969b077015dcde1c2b52d","recipientCount":1}}}
2026-06-22T16:58:23.358Z LOG [Customer SMS reply sent] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3969b077015dcde1c2b52d\",\"recipientCount\":1}}"}
2026-06-22T16:58:23.367Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":false,"capturedAddress":true,"capturedProperty":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-22T16:58:23.369Z LOG [SMS webhook async AI continuation completed] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","providerMessageSid":"textbee:6a3969af77015dcde1c2b507"}
2026-06-22T16:59:41.858Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T16:59:41.858Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"commerical","providerMessageSid":"textbee:6a3969fe77015dcde1c2c2d7"}
2026-06-22T16:59:41.869Z LOG [Inbound SMS linked to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T16:59:41.883Z LOG [Incoming SMS saved to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","messageId":"15b14360-4baf-4d04-88e2-14e99897aeab","messageProviderSid":"textbee:6a3969fe77015dcde1c2c2d7","mode":"webhook_fast_save"}
2026-06-22T16:59:41.954Z LOG [SMS cost guard disabled for testing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T16:59:41.973Z LOG [Customer SMS reply attempt] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","messageLength":73}
2026-06-22T16:59:41.974Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":73}
2026-06-22T16:59:42.229Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3969ff77015dcde1c2c2fd","recipientCount":1}}}
2026-06-22T16:59:42.230Z LOG [Customer SMS reply sent] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3969ff77015dcde1c2c2fd\",\"recipientCount\":1}}"}
2026-06-22T16:59:42.237Z LOG [SMS webhook async AI continuation completed] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","providerMessageSid":"textbee:6a3969fe77015dcde1c2c2d7"}
2026-06-22T17:00:05.676Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:00:05.677Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"business","providerMessageSid":"textbee:6a396a1277015dcde1c2ecfd"}
2026-06-22T17:00:05.689Z LOG [Inbound SMS linked to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:00:05.710Z LOG [Incoming SMS saved to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","messageId":"a64bea61-6d74-4da4-9112-c3854ce702a1","messageProviderSid":"textbee:6a396a1277015dcde1c2ecfd","mode":"webhook_fast_save"}
2026-06-22T17:00:05.735Z LOG [SMS cost guard disabled for testing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:00:05.753Z LOG [Service area check] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T17:00:05.756Z LOG [Customer SMS reply attempt] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":68}
2026-06-22T17:00:05.757Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-22T17:00:15.972Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a396a1d77015dcde1c2f2aa","recipientCount":1}}}
2026-06-22T17:00:15.973Z LOG [Customer SMS reply sent] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a396a1d77015dcde1c2f2aa\",\"recipientCount\":1}}"}
2026-06-22T17:00:15.980Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":false,"capturedAddress":true,"capturedProperty":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-22T17:00:15.981Z LOG [SMS webhook async AI continuation completed] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","providerMessageSid":"textbee:6a396a1277015dcde1c2ecfd"}
2026-06-22T17:00:52.379Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:00:52.380Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a396a4177015dcde1c31583"}
2026-06-22T17:00:52.387Z LOG [Inbound SMS linked to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:00:52.448Z LOG [Incoming SMS saved to lead] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","messageId":"38ec2436-db62-4db3-91e2-adcdc1f44b45","messageProviderSid":"textbee:6a396a4177015dcde1c31583","mode":"webhook_fast_save"}
2026-06-22T17:00:52.460Z LOG [SMS cost guard disabled for testing] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:00:52.503Z LOG [Deterministic required-field reply captured] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":true}
2026-06-22T17:00:52.514Z LOG [Service area check] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T17:00:52.534Z LOG [Customer SMS reply attempt] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":95}
2026-06-22T17:00:52.535Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T17:01:03.267Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a396a4d77015dcde1c32047","recipientCount":1}}}
2026-06-22T17:01:03.268Z LOG [Customer SMS reply sent] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a396a4d77015dcde1c32047\",\"recipientCount\":1}}"}
2026-06-22T17:01:03.309Z LOG [Owner alert check] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T17:01:05.172Z LOG [Owner alert sending] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T17:01:05.175Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 123 Main St, Gar","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T17:01:05.175Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":461}
2026-06-22T17:01:05.708Z LOG [Owner alert email result] sent/accepted
2026-06-22T17:01:16.911Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a396a5b77015dcde1c32f3b","recipientCount":1}}}
2026-06-22T17:01:16.912Z LOG [Owner SMS TextBee result] accepted
2026-06-22T17:01:16.912Z LOG [Owner alert sms result] sent/accepted
2026-06-22T17:01:16.920Z LOG [Owner alert completed] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T17:01:16.921Z LOG [SMS webhook async AI continuation completed] {"leadId":"5941f815-4cd6-4c87-b497-28d51a9a7383","phone":"+14783092224","providerMessageSid":"textbee:6a396a4177015dcde1c31583"}
2026-06-22T17:27:18.122Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T17:27:18.136Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T17:27:18.137Z LOG Recover Missed Call running on port 3000
2026-06-22T17:27:18.138Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T17:27:18.138Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T17:27:24.834Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T17:27:24.936Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T17:27:24.940Z LOG Recover Missed Call running on port 3000
2026-06-22T17:27:24.940Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T17:27:24.941Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T17:27:43.861Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:RvVL8WGlOqP7X3JivzphKRqiyHj0QQj9bFIwgGKpaAs9MCKpicp6fQ","callLegId":"adff2e72-6e5f-11f1-b6c1-02420aef8ba1","callSessionId":"adff2440-6e5f-11f1-a05b-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T17:27:43.944Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T17:27:44.134Z LOG [Telnyx voice command ok: answer]
2026-06-22T17:27:44.134Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T17:27:44.135Z LOG [Missed-call recovery triggered] {"key":"adff2440-6e5f-11f1-a05b-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T17:27:44.159Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T17:27:44.290Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:RvVL8WGlOqP7X3JivzphKRqiyHj0QQj9bFIwgGKpaAs9MCKpicp6fQ","callLegId":"adff2e72-6e5f-11f1-b6c1-02420aef8ba1","callSessionId":"adff2440-6e5f-11f1-a05b-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T17:27:44.304Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T17:27:44.304Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T17:27:44.305Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"adff2440-6e5f-11f1-a05b-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T17:27:44.379Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T17:27:44.652Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:RvVL8WGlOqP7X3JivzphKRqiyHj0QQj9bFIwgGKpaAs9MCKpicp6fQ","callLegId":"adff2e72-6e5f-11f1-b6c1-02420aef8ba1","callSessionId":"adff2440-6e5f-11f1-a05b-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T17:27:44.666Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T17:27:44.667Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T17:27:44.668Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"adff2440-6e5f-11f1-a05b-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T17:27:44.668Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T17:27:51.176Z LOG [Missed-call recovery SMS attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T17:27:51.177Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T17:27:51.755Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39709877015dcde1c5101e","recipientCount":1}}}
2026-06-22T17:27:51.762Z LOG [Missed-call recovery SMS sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39709877015dcde1c5101e\",\"recipientCount\":1}}"}
2026-06-22T17:27:51.774Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T17:27:55.136Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:RvVL8WGlOqP7X3JivzphKRqiyHj0QQj9bFIwgGKpaAs9MCKpicp6fQ","callLegId":"adff2e72-6e5f-11f1-b6c1-02420aef8ba1","callSessionId":"adff2440-6e5f-11f1-a05b-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T17:27:55.143Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T17:27:55.143Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T17:27:55.144Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"adff2440-6e5f-11f1-a05b-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T17:27:55.144Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T17:27:55.264Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T17:27:55.335Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:RvVL8WGlOqP7X3JivzphKRqiyHj0QQj9bFIwgGKpaAs9MCKpicp6fQ","callLegId":"adff2e72-6e5f-11f1-b6c1-02420aef8ba1","callSessionId":"adff2440-6e5f-11f1-a05b-02420aef8ba1","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T17:27:55.343Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T17:27:55.343Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T17:27:55.343Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"adff2440-6e5f-11f1-a05b-02420aef8ba1:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T17:30:08.021Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:30:08.023Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"We have bees","providerMessageSid":"textbee:6a39712077015dcde1c5574c"}
2026-06-22T17:30:08.036Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T17:30:08.071Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"e245d5cd-b3de-4dfe-8b28-7f7714017a18","messageProviderSid":"textbee:6a39712077015dcde1c5574c","mode":"webhook_fast_save"}
2026-06-22T17:30:08.088Z LOG [SMS cost guard disabled for testing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:30:08.142Z LOG [Business-related inbound revived AI intake] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"intake","bodyPreview":"We have bees"}
2026-06-22T17:30:25.108Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-22T17:30:25.108Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-22T17:30:25.827Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39713277015dcde1c5600d","recipientCount":1}}}
2026-06-22T17:30:25.827Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39713277015dcde1c5600d\",\"recipientCount\":1}}"}
2026-06-22T17:30:25.844Z LOG [Owner alert check] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-22T17:30:25.845Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-22T17:30:25.847Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a39712077015dcde1c5574c"}
2026-06-22T17:30:37.993Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:30:37.994Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a39713e77015dcde1c56674"}
2026-06-22T17:30:38.004Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:30:38.023Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"abce6d2b-5a03-4671-8e2b-266eecdc43e3","messageProviderSid":"textbee:6a39713e77015dcde1c56674","mode":"webhook_fast_save"}
2026-06-22T17:30:38.044Z LOG [SMS cost guard disabled for testing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:30:38.110Z LOG [Deterministic required-field reply captured] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-22T17:30:38.119Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-22T17:30:38.120Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-22T17:30:38.876Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39713f77015dcde1c566fb","recipientCount":1}}}
2026-06-22T17:30:38.877Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39713f77015dcde1c566fb\",\"recipientCount\":1}}"}
2026-06-22T17:30:38.888Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a39713e77015dcde1c56674"}
2026-06-22T17:30:50.311Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:30:50.311Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 Main St","providerMessageSid":"textbee:6a39714b77015dcde1c56c7b"}
2026-06-22T17:30:50.320Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:30:50.331Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"facef5ed-9358-490e-8d7f-457af1ea51f3","messageProviderSid":"textbee:6a39714b77015dcde1c56c7b","mode":"webhook_fast_save"}
2026-06-22T17:30:50.352Z LOG [SMS cost guard disabled for testing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:30:54.874Z LOG [Service area check] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"unknown","distanceMiles":null,"reason":"geocoding unavailable or address could not be resolved"}
2026-06-22T17:30:54.879Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-22T17:30:54.879Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-22T17:30:55.595Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39715077015dcde1c56f21","recipientCount":1}}}
2026-06-22T17:30:55.596Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39715077015dcde1c56f21\",\"recipientCount\":1}}"}
2026-06-22T17:30:55.603Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-22T17:30:55.604Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a39714b77015dcde1c56c7b"}
2026-06-22T17:31:12.839Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:31:12.840Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a39716177015dcde1c57649"}
2026-06-22T17:31:12.852Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:31:12.919Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"fcb7301a-f9b5-4696-908d-ee96506a24f2","messageProviderSid":"textbee:6a39716177015dcde1c57649","mode":"webhook_fast_save"}
2026-06-22T17:31:12.927Z LOG [SMS cost guard disabled for testing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:31:17.436Z LOG [Service area check] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"unknown","distanceMiles":null,"reason":"geocoding unavailable or address could not be resolved"}
2026-06-22T17:31:17.440Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-22T17:31:17.440Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-22T17:31:18.108Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39716777015dcde1c5789f","recipientCount":1}}}
2026-06-22T17:31:18.108Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39716777015dcde1c5789f\",\"recipientCount\":1}}"}
2026-06-22T17:31:18.115Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-22T17:31:18.118Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a39716177015dcde1c57649"}
2026-06-22T17:31:36.415Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:31:36.415Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a39717977015dcde1c5822a"}
2026-06-22T17:31:36.422Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T17:31:36.432Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"0e95937d-3182-4ced-96fb-a83666b0d882","messageProviderSid":"textbee:6a39717977015dcde1c5822a","mode":"webhook_fast_save"}
2026-06-22T17:31:36.440Z LOG [SMS cost guard disabled for testing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T17:31:39.024Z LOG [Service area check] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","status":"out_of_area","distanceMiles":551.4,"reason":"estimated 551.4 miles from business address, outside 25 miles"}
2026-06-22T17:31:39.095Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_out_of_area","provider":"textbee","messageLength":133}
2026-06-22T17:31:39.096Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":133}
2026-06-22T17:31:39.714Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39717c77015dcde1c583f5","recipientCount":1}}}
2026-06-22T17:31:39.714Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"detailed_lead_out_of_area","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39717c77015dcde1c583f5\",\"recipientCount\":1}}"}
2026-06-22T17:31:39.724Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"outOfArea":true,"sent":true,"replyPreview":"Metro Pest Control: Thanks — that address appears to be outside our normal service area, but the office will review it and follow up."}
2026-06-22T17:31:39.726Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a39717977015dcde1c5822a"}
2026-06-22T17:33:06.150Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T17:33:06.150Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"address is 123 Main St, Garden City, MI","providerMessageSid":"textbee:6a3971d177015dcde1c5a9a8"}
2026-06-22T17:33:06.157Z LOG [Inbound SMS linked to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"needs_review","mode":"webhook_fast_save"}
2026-06-22T17:33:06.178Z LOG [Incoming SMS saved to lead] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","messageId":"087a458f-0acf-45b7-be64-fe0df612f72f","messageProviderSid":"textbee:6a3971d177015dcde1c5a9a8","mode":"webhook_fast_save"}
2026-06-22T17:33:06.187Z LOG [Inbound SMS after completed intake routed to office with customer callback reply] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","bodyPreview":"address is 123 Main St, Garden City, MI"}
2026-06-22T17:33:06.196Z LOG [Post-lead update mode] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"address is 123 Main St, Garden City, MI"}
2026-06-22T17:33:06.196Z LOG [Post-lead customer ack suppressed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-22T17:33:06.199Z LOG [Owner lead-update SMS check] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-22T17:33:06.201Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 123 Main St\nNew message","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T17:33:06.202Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":182}
2026-06-22T17:33:08.146Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3971d577015dcde1c5ab67","recipientCount":1}}}
2026-06-22T17:33:08.146Z LOG [Owner SMS TextBee result] accepted
2026-06-22T17:33:08.146Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-22T17:33:08.154Z LOG [Customer SMS reply attempt] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","messageLength":92}
2026-06-22T17:33:08.154Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-22T17:33:10.324Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3971d577015dcde1c5ac0c","recipientCount":1}}}
2026-06-22T17:33:10.325Z LOG [Customer SMS reply sent] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3971d577015dcde1c5ac0c\",\"recipientCount\":1}}"}
2026-06-22T17:33:10.334Z LOG [SMS webhook async AI continuation completed] {"leadId":"af218bfc-391a-4f8c-8153-0561f6f9df4f","phone":"+14783092224","providerMessageSid":"textbee:6a3971d177015dcde1c5a9a8"}
2026-06-22T18:18:07.770Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T18:18:07.824Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T18:18:07.826Z LOG Recover Missed Call running on port 3000
2026-06-22T18:18:07.826Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T18:18:07.826Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T18:18:50.970Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:7UUJZf3tF5ncSfKNbcvXDgmOykuQDbRxIx4YlN92dVSnmk5pKWVThw","callLegId":"d21221a0-6e66-11f1-a517-02420aef8a1f","callSessionId":"d2121278-6e66-11f1-817e-02420aef8a1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T18:18:51.193Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T18:18:51.400Z LOG [Telnyx voice command ok: answer]
2026-06-22T18:18:51.401Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:18:51.402Z LOG [Missed-call recovery triggered] {"key":"d2121278-6e66-11f1-817e-02420aef8a1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:18:51.439Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T18:18:51.447Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:7UUJZf3tF5ncSfKNbcvXDgmOykuQDbRxIx4YlN92dVSnmk5pKWVThw","callLegId":"d21221a0-6e66-11f1-a517-02420aef8a1f","callSessionId":"d2121278-6e66-11f1-817e-02420aef8a1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T18:18:51.472Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:18:51.473Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:18:51.474Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2121278-6e66-11f1-817e-02420aef8a1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:18:51.608Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T18:18:51.843Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:7UUJZf3tF5ncSfKNbcvXDgmOykuQDbRxIx4YlN92dVSnmk5pKWVThw","callLegId":"d21221a0-6e66-11f1-a517-02420aef8a1f","callSessionId":"d2121278-6e66-11f1-817e-02420aef8a1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T18:18:51.858Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:18:51.859Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:18:51.859Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2121278-6e66-11f1-817e-02420aef8a1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:18:51.859Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:18:58.451Z LOG [Missed-call recovery SMS attempt] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T18:18:58.453Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T18:18:58.709Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a397c9377015dcde1c9662f","recipientCount":1}}}
2026-06-22T18:18:58.727Z LOG [Missed-call recovery SMS sent] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a397c9377015dcde1c9662f\",\"recipientCount\":1}}"}
2026-06-22T18:18:58.800Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T18:19:02.384Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:7UUJZf3tF5ncSfKNbcvXDgmOykuQDbRxIx4YlN92dVSnmk5pKWVThw","callLegId":"d21221a0-6e66-11f1-a517-02420aef8a1f","callSessionId":"d2121278-6e66-11f1-817e-02420aef8a1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T18:19:02.404Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:19:02.404Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:19:02.404Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2121278-6e66-11f1-817e-02420aef8a1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:19:02.405Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:19:02.511Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T18:19:02.620Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:7UUJZf3tF5ncSfKNbcvXDgmOykuQDbRxIx4YlN92dVSnmk5pKWVThw","callLegId":"d21221a0-6e66-11f1-a517-02420aef8a1f","callSessionId":"d2121278-6e66-11f1-817e-02420aef8a1f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T18:19:02.630Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:19:02.630Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:19:02.630Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"d2121278-6e66-11f1-817e-02420aef8a1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:19:38.500Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T18:19:38.502Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"My name is Chuck Simms, 33536 Unicorn Ct, Westland, MI and we have ant problem, ","providerMessageSid":"textbee:6a397cbb77015dcde1c96d1a"}
2026-06-22T18:19:38.511Z LOG [Inbound SMS linked to lead] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T18:19:38.521Z LOG [Incoming SMS saved to lead] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","messageId":"0d6a892a-1f6b-4f32-ae75-f0a778687837","messageProviderSid":"textbee:6a397cbb77015dcde1c96d1a","mode":"webhook_fast_save"}
2026-06-22T18:19:38.537Z LOG [SMS cost guard disabled for testing] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T18:19:38.562Z LOG [Service area check] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T18:19:38.630Z LOG [Customer SMS reply attempt] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":155}
2026-06-22T18:19:38.630Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":155}
2026-06-22T18:19:38.817Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a397cbb77015dcde1c96d48","recipientCount":1}}}
2026-06-22T18:19:38.818Z LOG [Customer SMS reply sent] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a397cbb77015dcde1c96d48\",\"recipientCount\":1}}"}
2026-06-22T18:19:38.824Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: If anyone is having a severe allergic reaction, trouble breathing, or is in immediate danger, call 911 now. I’ll mark this as urgent for the office. is this a r"}
2026-06-22T18:19:38.825Z LOG [SMS webhook async AI continuation completed] {"leadId":"4d509ca9-6e79-4dea-af90-700e8dfb8e64","phone":"+14783092224","providerMessageSid":"textbee:6a397cbb77015dcde1c96d1a"}
2026-06-22T18:28:52.439Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T18:28:52.528Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T18:28:52.533Z LOG Recover Missed Call running on port 3000
2026-06-22T18:28:52.534Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T18:28:52.534Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T18:30:09.268Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Sh3zWEBcRR2ndNEigQSkkR466i71soJGriRj_mTf-ErBTB6NX0a2gQ","callLegId":"6669541c-6e68-11f1-a38c-f6890d575709","callSessionId":"66694b84-6e68-11f1-92ff-f6890d575709","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T18:30:09.333Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T18:30:09.591Z LOG [Telnyx voice command ok: answer]
2026-06-22T18:30:09.592Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:30:09.593Z LOG [Missed-call recovery triggered] {"key":"66694b84-6e68-11f1-92ff-f6890d575709:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:30:09.620Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T18:30:09.643Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Sh3zWEBcRR2ndNEigQSkkR466i71soJGriRj_mTf-ErBTB6NX0a2gQ","callLegId":"6669541c-6e68-11f1-a38c-f6890d575709","callSessionId":"66694b84-6e68-11f1-92ff-f6890d575709","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T18:30:09.653Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:30:09.654Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:30:09.655Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"66694b84-6e68-11f1-92ff-f6890d575709:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:30:09.722Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T18:30:09.985Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Sh3zWEBcRR2ndNEigQSkkR466i71soJGriRj_mTf-ErBTB6NX0a2gQ","callLegId":"6669541c-6e68-11f1-a38c-f6890d575709","callSessionId":"66694b84-6e68-11f1-92ff-f6890d575709","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T18:30:09.992Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:30:09.993Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:30:09.993Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"66694b84-6e68-11f1-92ff-f6890d575709:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:30:09.993Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:30:16.638Z LOG [Missed-call recovery SMS attempt] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T18:30:16.639Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T18:30:16.850Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a397f3977015dcde1c9e4b3","recipientCount":1}}}
2026-06-22T18:30:16.858Z LOG [Missed-call recovery SMS sent] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a397f3977015dcde1c9e4b3\",\"recipientCount\":1}}"}
2026-06-22T18:30:16.872Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T18:30:20.553Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Sh3zWEBcRR2ndNEigQSkkR466i71soJGriRj_mTf-ErBTB6NX0a2gQ","callLegId":"6669541c-6e68-11f1-a38c-f6890d575709","callSessionId":"66694b84-6e68-11f1-92ff-f6890d575709","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T18:30:20.561Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:30:20.561Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:30:20.562Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"66694b84-6e68-11f1-92ff-f6890d575709:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:30:20.562Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:30:20.715Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T18:30:20.799Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Sh3zWEBcRR2ndNEigQSkkR466i71soJGriRj_mTf-ErBTB6NX0a2gQ","callLegId":"6669541c-6e68-11f1-a38c-f6890d575709","callSessionId":"66694b84-6e68-11f1-92ff-f6890d575709","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T18:30:20.808Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:30:20.808Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:30:20.809Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"66694b84-6e68-11f1-92ff-f6890d575709:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:31:07.075Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T18:31:07.079Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms here, looking for some help with mosquitos.  Our address is 123 Main","providerMessageSid":"textbee:6a397f6b77015dcde1c9f451"}
2026-06-22T18:31:07.089Z LOG [Inbound SMS linked to lead] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T18:31:07.116Z LOG [Incoming SMS saved to lead] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","messageId":"925407be-2109-4ff3-8201-5799f1d2aa08","messageProviderSid":"textbee:6a397f6b77015dcde1c9f451","mode":"webhook_fast_save"}
2026-06-22T18:31:07.138Z LOG [SMS cost guard disabled for testing] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T18:31:07.178Z LOG [Customer SMS reply attempt] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","context":"direct_business_safety_question","provider":"textbee","messageLength":155}
2026-06-22T18:31:07.178Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":155}
2026-06-22T18:31:07.427Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a397f6c77015dcde1c9f4a5","recipientCount":1}}}
2026-06-22T18:31:07.428Z LOG [Customer SMS reply sent] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","context":"direct_business_safety_question","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a397f6c77015dcde1c9f4a5\",\"recipientCount\":1}}"}
2026-06-22T18:31:07.446Z LOG [Direct business knowledge question handled] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","intent":"safety_question","inferredServiceType":null,"inferredUrgency":null,"inferredName":"Chuck Simms","inferredAddress":"123 Main St, Garden City, MI","inferredPropertyType":null,"replyPreview":"Metro Pest Control: The office or technician can confirm product and safety instructions before treatment. We handle pest control requests. What pest issue are you dealing with tod","sent":true}
2026-06-22T18:31:07.449Z LOG [SMS webhook async AI continuation completed] {"leadId":"d9628b8f-b2cf-4ce6-bb4c-34d0994ea663","phone":"+14783092224","providerMessageSid":"textbee:6a397f6b77015dcde1c9f451"}
2026-06-22T18:43:02.036Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T18:43:02.120Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T18:43:02.122Z LOG Recover Missed Call running on port 3000
2026-06-22T18:43:02.123Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T18:43:02.123Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T18:43:26.442Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:lPdauWh4NHzIOLxmG22gi8dH0Pt2JxrGDEiIkO1HiefNnv1P0PMKag","callLegId":"4172c5d8-6e6a-11f1-9146-16ce90fd1292","callSessionId":"4172bb92-6e6a-11f1-8047-16ce90fd1292","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T18:43:26.499Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T18:43:26.836Z LOG [Telnyx voice command ok: answer]
2026-06-22T18:43:26.836Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:43:26.837Z LOG [Missed-call recovery triggered] {"key":"4172bb92-6e6a-11f1-8047-16ce90fd1292:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:43:26.852Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T18:43:27.134Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:lPdauWh4NHzIOLxmG22gi8dH0Pt2JxrGDEiIkO1HiefNnv1P0PMKag","callLegId":"4172c5d8-6e6a-11f1-9146-16ce90fd1292","callSessionId":"4172bb92-6e6a-11f1-8047-16ce90fd1292","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T18:43:27.142Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:43:27.142Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:43:27.143Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4172bb92-6e6a-11f1-8047-16ce90fd1292:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:43:27.310Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T18:43:27.853Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:lPdauWh4NHzIOLxmG22gi8dH0Pt2JxrGDEiIkO1HiefNnv1P0PMKag","callLegId":"4172c5d8-6e6a-11f1-9146-16ce90fd1292","callSessionId":"4172bb92-6e6a-11f1-8047-16ce90fd1292","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T18:43:27.860Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:43:27.861Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:43:27.861Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4172bb92-6e6a-11f1-8047-16ce90fd1292:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:43:27.861Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:43:33.861Z LOG [Missed-call recovery SMS attempt] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T18:43:33.862Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T18:43:34.070Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39825677015dcde1cad021","recipientCount":1}}}
2026-06-22T18:43:34.077Z LOG [Missed-call recovery SMS sent] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39825677015dcde1cad021\",\"recipientCount\":1}}"}
2026-06-22T18:43:34.086Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T18:43:38.623Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:lPdauWh4NHzIOLxmG22gi8dH0Pt2JxrGDEiIkO1HiefNnv1P0PMKag","callLegId":"4172c5d8-6e6a-11f1-9146-16ce90fd1292","callSessionId":"4172bb92-6e6a-11f1-8047-16ce90fd1292","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T18:43:38.630Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:43:38.630Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:43:38.631Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4172bb92-6e6a-11f1-8047-16ce90fd1292:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:43:38.631Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:43:38.829Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T18:43:39.006Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:lPdauWh4NHzIOLxmG22gi8dH0Pt2JxrGDEiIkO1HiefNnv1P0PMKag","callLegId":"4172c5d8-6e6a-11f1-9146-16ce90fd1292","callSessionId":"4172bb92-6e6a-11f1-8047-16ce90fd1292","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T18:43:39.015Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:43:39.015Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:43:39.015Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4172bb92-6e6a-11f1-8047-16ce90fd1292:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:44:17.592Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T18:44:17.594Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Hi I'm Chuck and I need help with bees around our front door right away.  321 Oa","providerMessageSid":"textbee:6a39828277015dcde1cad79c"}
2026-06-22T18:44:17.603Z LOG [Inbound SMS linked to lead] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T18:44:17.622Z LOG [Incoming SMS saved to lead] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","messageId":"18b402ae-e91e-45a5-b147-531e8e936461","messageProviderSid":"textbee:6a39828277015dcde1cad79c","mode":"webhook_fast_save"}
2026-06-22T18:44:17.640Z LOG [SMS cost guard disabled for testing] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T18:44:17.653Z LOG [Service area check] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T18:44:17.715Z LOG [Customer SMS reply attempt] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-22T18:44:17.715Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T18:44:17.905Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39828277015dcde1cad7c2","recipientCount":1}}}
2026-06-22T18:44:17.905Z LOG [Customer SMS reply sent] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39828277015dcde1cad7c2\",\"recipientCount\":1}}"}
2026-06-22T18:44:17.928Z LOG [Owner alert check] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T18:44:17.929Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","status":"qualified","qualified":1,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-22T18:44:17.929Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-22T18:44:17.930Z LOG [SMS webhook async AI continuation completed] {"leadId":"7f14bdfb-f382-48c7-bf11-4c5b7d0cca00","phone":"+14783092224","providerMessageSid":"textbee:6a39828277015dcde1cad79c"}
2026-06-22T18:56:50.034Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T18:56:50.121Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T18:56:50.123Z LOG Recover Missed Call running on port 3000
2026-06-22T18:56:50.123Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T18:56:50.123Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T18:57:04.374Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:v_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg","callLegId":"28de896a-6e6c-11f1-ac68-a6bd8b8cb71c","callSessionId":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T18:57:04.432Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T18:57:04.827Z LOG [Telnyx voice command ok: answer]
2026-06-22T18:57:04.827Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:57:04.828Z LOG [Missed-call recovery triggered] {"key":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T18:57:04.847Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T18:57:05.100Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:v_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg","callLegId":"28de896a-6e6c-11f1-ac68-a6bd8b8cb71c","callSessionId":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T18:57:05.116Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:57:05.116Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:57:05.117Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T18:57:05.295Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T18:57:06.243Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:v_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg","callLegId":"28de896a-6e6c-11f1-ac68-a6bd8b8cb71c","callSessionId":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T18:57:06.256Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:57:06.257Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:57:06.257Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T18:57:06.257Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:57:11.868Z LOG [Missed-call recovery SMS attempt] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T18:57:11.869Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T18:57:12.124Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39858977015dcde1cb673c","recipientCount":1}}}
2026-06-22T18:57:12.136Z LOG [Missed-call recovery SMS sent] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39858977015dcde1cb673c\",\"recipientCount\":1}}"}
2026-06-22T18:57:12.208Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T18:57:16.312Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:v_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg","callLegId":"28de896a-6e6c-11f1-ac68-a6bd8b8cb71c","callSessionId":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T18:57:16.322Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:57:16.322Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:57:16.322Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T18:57:16.322Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T18:57:16.458Z ERROR [Telnyx API error] {"path":"/calls/v3%3Av_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-22T18:57:16.461Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-22T18:57:16.488Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:v_UVlSq6YnQvfsX3j00Mn4TUIO-Ka3v8HqiSaP-QIyfNFx3FOlOHJg","callLegId":"28de896a-6e6c-11f1-ac68-a6bd8b8cb71c","callSessionId":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T18:57:16.496Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T18:57:16.497Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:57:16.497Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"28de829e-6e6c-11f1-a8ff-a6bd8b8cb71c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T18:57:57.353Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T18:57:57.355Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I have ants in the kitchen all over the place and need some help asap.  I'm Chuc","providerMessageSid":"textbee:6a3985b677015dcde1cb6d29"}
2026-06-22T18:57:57.364Z LOG [Inbound SMS linked to lead] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T18:57:57.374Z LOG [Incoming SMS saved to lead] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","messageId":"97b25ac3-cf75-4369-9f47-4323e6dfd22f","messageProviderSid":"textbee:6a3985b677015dcde1cb6d29","mode":"webhook_fast_save"}
2026-06-22T18:57:57.389Z LOG [SMS cost guard disabled for testing] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T18:57:57.407Z LOG [Service area check] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T18:57:57.438Z LOG [Customer SMS reply attempt] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":214}
2026-06-22T18:57:57.439Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":214}
2026-06-22T18:57:58.285Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3985b777015dcde1cb6d91","recipientCount":1}}}
2026-06-22T18:57:58.285Z LOG [Customer SMS reply sent] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3985b777015dcde1cb6d91\",\"recipientCount\":1}}"}
2026-06-22T18:57:58.291Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: If anyone is having a severe allergic reaction, trouble breathing, or is in immediate danger, call 911 now. I’ll mark this as urgent for the office. is this a r"}
2026-06-22T18:57:58.292Z LOG [SMS webhook async AI continuation completed] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","providerMessageSid":"textbee:6a3985b677015dcde1cb6d29"}
2026-06-22T18:58:36.469Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T18:58:36.470Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"not urgent, tomorrow is fine.  It's a home","providerMessageSid":"textbee:6a3985dd77015dcde1cb7c26"}
2026-06-22T18:58:36.476Z LOG [Inbound SMS linked to lead] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T18:58:36.487Z LOG [Incoming SMS saved to lead] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","messageId":"ae13475d-292c-407f-b5c5-529605c32112","messageProviderSid":"textbee:6a3985dd77015dcde1cb7c26","mode":"webhook_fast_save"}
2026-06-22T18:58:36.496Z LOG [SMS cost guard disabled for testing] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T18:58:36.505Z LOG [Service area check] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T18:58:36.512Z LOG [Customer SMS reply attempt] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-22T18:58:36.513Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T18:58:36.769Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3985dd77015dcde1cb7c55","recipientCount":1}}}
2026-06-22T18:58:36.769Z LOG [Customer SMS reply sent] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3985dd77015dcde1cb7c55\",\"recipientCount\":1}}"}
2026-06-22T18:58:36.792Z LOG [Owner alert check] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T18:58:38.791Z LOG [Owner alert sending] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T18:58:38.794Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 456 Elm Dr, Livonia, M","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T18:58:38.795Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":434}
2026-06-22T18:58:39.236Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3985e077015dcde1cb7d70","recipientCount":1}}}
2026-06-22T18:58:39.249Z LOG [Owner SMS TextBee result] accepted
2026-06-22T18:58:39.249Z LOG [Owner alert sms result] sent/accepted
2026-06-22T18:58:39.560Z LOG [Owner alert email result] sent/accepted
2026-06-22T18:58:39.576Z LOG [Owner alert completed] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T18:58:39.577Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-22T18:58:39.578Z LOG [SMS webhook async AI continuation completed] {"leadId":"90cabb0a-5346-463c-b9f4-17872998382e","phone":"+14783092224","providerMessageSid":"textbee:6a3985dd77015dcde1cb7c26"}
2026-06-22T19:13:57.040Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T19:13:57.129Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T19:13:57.131Z LOG Recover Missed Call running on port 3000
2026-06-22T19:13:57.131Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T19:13:57.131Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T19:15:43.148Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T19:15:43.235Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T19:15:43.237Z LOG Recover Missed Call running on port 3000
2026-06-22T19:15:43.238Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T19:15:43.238Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T19:16:01.015Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:D7cuPhO7InU-X05EuGHvY13OFVBwLcrokQihaJiwutXkdqKI5xBRxA","callLegId":"cea1d530-6e6e-11f1-9c2b-02420aef8c20","callSessionId":"cea1ca22-6e6e-11f1-9e78-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T19:16:01.080Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T19:16:01.269Z LOG [Telnyx voice command ok: answer]
2026-06-22T19:16:01.270Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T19:16:01.271Z LOG [Missed-call recovery triggered] {"key":"cea1ca22-6e6e-11f1-9e78-02420aef8c20:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T19:16:01.292Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T19:16:01.357Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:D7cuPhO7InU-X05EuGHvY13OFVBwLcrokQihaJiwutXkdqKI5xBRxA","callLegId":"cea1d530-6e6e-11f1-9c2b-02420aef8c20","callSessionId":"cea1ca22-6e6e-11f1-9e78-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T19:16:01.367Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T19:16:01.367Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T19:16:01.367Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cea1ca22-6e6e-11f1-9e78-02420aef8c20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T19:16:01.436Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T19:16:01.814Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:D7cuPhO7InU-X05EuGHvY13OFVBwLcrokQihaJiwutXkdqKI5xBRxA","callLegId":"cea1d530-6e6e-11f1-9c2b-02420aef8c20","callSessionId":"cea1ca22-6e6e-11f1-9e78-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T19:16:01.837Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T19:16:01.838Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T19:16:01.838Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cea1ca22-6e6e-11f1-9e78-02420aef8c20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T19:16:01.839Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T19:16:08.302Z LOG [Missed-call recovery SMS attempt] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T19:16:08.303Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T19:16:08.559Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3989f977015dcde1cd76f3","recipientCount":1}}}
2026-06-22T19:16:08.567Z LOG [Missed-call recovery SMS sent] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3989f977015dcde1cd76f3\",\"recipientCount\":1}}"}
2026-06-22T19:16:08.581Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T19:16:12.203Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:D7cuPhO7InU-X05EuGHvY13OFVBwLcrokQihaJiwutXkdqKI5xBRxA","callLegId":"cea1d530-6e6e-11f1-9c2b-02420aef8c20","callSessionId":"cea1ca22-6e6e-11f1-9e78-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T19:16:12.211Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T19:16:12.211Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T19:16:12.211Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cea1ca22-6e6e-11f1-9e78-02420aef8c20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T19:16:12.212Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T19:16:12.292Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-22T19:16:12.380Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:D7cuPhO7InU-X05EuGHvY13OFVBwLcrokQihaJiwutXkdqKI5xBRxA","callLegId":"cea1d530-6e6e-11f1-9c2b-02420aef8c20","callSessionId":"cea1ca22-6e6e-11f1-9e78-02420aef8c20","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T19:16:12.390Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T19:16:12.390Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T19:16:12.390Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"cea1ca22-6e6e-11f1-9e78-02420aef8c20:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T19:17:08.040Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T19:17:08.042Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Hi, I'm Chuck and need someone to come out here for a wasp issue.  33536 Unicorn","providerMessageSid":"textbee:6a398a3477015dcde1cd84ec"}
2026-06-22T19:17:08.052Z LOG [Inbound SMS linked to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T19:17:08.076Z LOG [Incoming SMS saved to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","messageId":"9a2a7d0c-8c25-4ea7-9670-35b2425afd43","messageProviderSid":"textbee:6a398a3477015dcde1cd84ec","mode":"webhook_fast_save"}
2026-06-22T19:17:08.090Z LOG [SMS cost guard disabled for testing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T19:17:08.105Z LOG [Service area check] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T19:17:08.137Z LOG [Customer SMS reply attempt] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-22T19:17:08.137Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-22T19:17:08.366Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398a3577015dcde1cd8539","recipientCount":1}}}
2026-06-22T19:17:08.366Z LOG [Customer SMS reply sent] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a398a3577015dcde1cd8539\",\"recipientCount\":1}}"}
2026-06-22T19:17:08.373Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-22T19:17:08.374Z LOG [SMS webhook async AI continuation completed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","providerMessageSid":"textbee:6a398a3477015dcde1cd84ec"}
2026-06-22T19:17:23.326Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T19:17:23.326Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"residence","providerMessageSid":"textbee:6a398a4477015dcde1cd8a1f"}
2026-06-22T19:17:23.334Z LOG [Inbound SMS linked to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T19:17:23.349Z LOG [Incoming SMS saved to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","messageId":"78d1c903-4a92-4c7a-a8af-c451d3574845","messageProviderSid":"textbee:6a398a4477015dcde1cd8a1f","mode":"webhook_fast_save"}
2026-06-22T19:17:23.409Z LOG [SMS cost guard disabled for testing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T19:17:23.418Z LOG [Service area check] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T19:17:23.422Z LOG [Customer SMS reply attempt] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-22T19:17:23.423Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-22T19:17:23.635Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398a4477015dcde1cd8a4d","recipientCount":1}}}
2026-06-22T19:17:23.636Z LOG [Customer SMS reply sent] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a398a4477015dcde1cd8a4d\",\"recipientCount\":1}}"}
2026-06-22T19:17:23.643Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-22T19:17:23.645Z LOG [SMS webhook async AI continuation completed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","providerMessageSid":"textbee:6a398a4477015dcde1cd8a1f"}
2026-06-22T19:17:43.146Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T19:17:43.146Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a398a5877015dcde1cd8dc3"}
2026-06-22T19:17:43.154Z LOG [Inbound SMS linked to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T19:17:43.164Z LOG [Incoming SMS saved to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","messageId":"f394d062-e2f4-4a8e-b4fe-7c8bc69b5ca1","messageProviderSid":"textbee:6a398a5877015dcde1cd8dc3","mode":"webhook_fast_save"}
2026-06-22T19:17:43.180Z LOG [SMS cost guard disabled for testing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T19:17:43.188Z LOG [Service area check] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T19:17:43.193Z LOG [Customer SMS reply attempt] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-22T19:17:43.194Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T19:17:43.647Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398a5877015dcde1cd8e17","recipientCount":1}}}
2026-06-22T19:17:43.647Z LOG [Customer SMS reply sent] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a398a5877015dcde1cd8e17\",\"recipientCount\":1}}"}
2026-06-22T19:17:43.671Z LOG [Owner alert check] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T19:17:45.664Z LOG [Owner alert sending] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T19:17:45.666Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 33536 Unicorn Ct","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T19:17:45.667Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":396}
2026-06-22T19:17:45.874Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398a5a77015dcde1cd8fb8","recipientCount":1}}}
2026-06-22T19:17:45.874Z LOG [Owner SMS TextBee result] accepted
2026-06-22T19:17:45.874Z LOG [Owner alert sms result] sent/accepted
2026-06-22T19:17:46.229Z LOG [Owner alert email result] sent/accepted
2026-06-22T19:17:46.243Z LOG [Owner alert completed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T19:17:46.244Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-22T19:17:46.246Z LOG [SMS webhook async AI continuation completed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","providerMessageSid":"textbee:6a398a5877015dcde1cd8dc3"}
2026-06-22T19:19:04.564Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T19:19:04.565Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Sorry, it's urgent now","providerMessageSid":"textbee:6a398aa977015dcde1cda0da"}
2026-06-22T19:19:04.572Z LOG [Inbound SMS linked to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"qualified","mode":"webhook_fast_save"}
2026-06-22T19:19:04.580Z LOG [Incoming SMS saved to lead] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","messageId":"8e2fdd13-96ff-4228-8fc0-81ec0ef95226","messageProviderSid":"textbee:6a398aa977015dcde1cda0da","mode":"webhook_fast_save"}
2026-06-22T19:19:04.589Z LOG [Inbound SMS after completed intake routed to office with customer callback reply] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","bodyPreview":"Sorry, it's urgent now"}
2026-06-22T19:19:04.595Z LOG [Post-lead update mode] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"Sorry, it's urgent now"}
2026-06-22T19:19:04.596Z LOG [Post-lead customer ack suppressed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-22T19:19:04.598Z LOG [Owner lead-update SMS check] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-22T19:19:04.601Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 33536 Unicorn Ct, Westl","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T19:19:04.601Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":184}
2026-06-22T19:19:04.798Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398aa977015dcde1cda106","recipientCount":1}}}
2026-06-22T19:19:04.799Z LOG [Owner SMS TextBee result] accepted
2026-06-22T19:19:04.799Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-22T19:19:04.833Z LOG [Customer SMS reply attempt] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","messageLength":92}
2026-06-22T19:19:04.833Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-22T19:19:05.158Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a398aaa77015dcde1cda144","recipientCount":1}}}
2026-06-22T19:19:05.159Z LOG [Customer SMS reply sent] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a398aaa77015dcde1cda144\",\"recipientCount\":1}}"}
2026-06-22T19:19:05.169Z LOG [SMS webhook async AI continuation completed] {"leadId":"7dbe4dbe-efb5-42bf-8af9-d7509898ab2e","phone":"+14783092224","providerMessageSid":"textbee:6a398aa977015dcde1cda0da"}
2026-06-22T21:09:18.846Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T21:09:18.936Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T21:09:18.939Z LOG Recover Missed Call running on port 3000
2026-06-22T21:09:18.939Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T21:09:18.940Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T21:22:18.018Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-22T21:22:18.031Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-22T21:22:18.033Z LOG Recover Missed Call running on port 3000
2026-06-22T21:22:18.033Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-22T21:22:18.034Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-22T21:23:00.357Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:rM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ","callLegId":"8bdcb71c-6e80-11f1-95ad-be1ad1857b7f","callSessionId":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-22T21:23:00.569Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-22T21:23:00.946Z LOG [Telnyx voice command ok: answer]
2026-06-22T21:23:00.946Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T21:23:00.947Z LOG [Missed-call recovery triggered] {"key":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-22T21:23:00.975Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-22T21:23:01.229Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:rM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ","callLegId":"8bdcb71c-6e80-11f1-95ad-be1ad1857b7f","callSessionId":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-22T21:23:01.243Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T21:23:01.244Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T21:23:01.244Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-22T21:23:01.390Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-22T21:23:01.806Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:rM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ","callLegId":"8bdcb71c-6e80-11f1-95ad-be1ad1857b7f","callSessionId":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-22T21:23:01.826Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T21:23:01.827Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T21:23:01.828Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-22T21:23:01.828Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T21:23:05.772Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:rM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ","callLegId":"8bdcb71c-6e80-11f1-95ad-be1ad1857b7f","callSessionId":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-22T21:23:05.786Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T21:23:05.786Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T21:23:05.787Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-22T21:23:05.947Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:rM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ","callLegId":"8bdcb71c-6e80-11f1-95ad-be1ad1857b7f","callSessionId":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-22T21:23:05.963Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-22T21:23:05.963Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T21:23:05.964Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8bdca88a-6e80-11f1-beb4-be1ad1857b7f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-22T21:23:05.964Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-22T21:23:06.110Z ERROR [Telnyx API error] {"path":"/calls/v3%3ArM72rPDdkKi4PhALyykpYYp-ACwtCL-PqS5QbXYJFsu17ArMxNgUHQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-22T21:23:06.111Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-22T21:23:07.986Z LOG [Missed-call recovery SMS attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-22T21:23:07.987Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-22T21:23:08.196Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a7bd77015dcde1d4f348","recipientCount":1}}}
2026-06-22T21:23:08.201Z LOG [Missed-call recovery SMS sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a7bd77015dcde1d4f348\",\"recipientCount\":1}}"}
2026-06-22T21:23:08.211Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-22T21:24:51.204Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T21:24:51.206Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms here, having problems with roaches in the kitchen","providerMessageSid":"textbee:6a39a82477015dcde1d5038c"}
2026-06-22T21:24:51.214Z LOG [Inbound SMS linked to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-22T21:24:51.235Z LOG [Incoming SMS saved to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","messageId":"afe9fccf-998b-466c-b266-dadd53946b93","messageProviderSid":"textbee:6a39a82477015dcde1d5038c","mode":"webhook_fast_save"}
2026-06-22T21:24:51.255Z LOG [SMS cost guard disabled for testing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T21:24:51.319Z LOG [Customer SMS reply attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":62}
2026-06-22T21:24:51.320Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-22T21:24:51.643Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a82477015dcde1d503b2","recipientCount":1}}}
2026-06-22T21:24:51.643Z LOG [Customer SMS reply sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a82477015dcde1d503b2\",\"recipientCount\":1}}"}
2026-06-22T21:24:51.652Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":false,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — what is the full service address?"}
2026-06-22T21:24:51.655Z LOG [SMS webhook async AI continuation completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","providerMessageSid":"textbee:6a39a82477015dcde1d5038c"}
2026-06-22T21:25:17.050Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T21:25:17.051Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct Westland, MI","providerMessageSid":"textbee:6a39a83d77015dcde1d5085d"}
2026-06-22T21:25:17.059Z LOG [Inbound SMS linked to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T21:25:17.068Z LOG [Incoming SMS saved to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","messageId":"9456403e-6e1a-41af-a8be-0395a81ad6f2","messageProviderSid":"textbee:6a39a83d77015dcde1d5085d","mode":"webhook_fast_save"}
2026-06-22T21:25:17.104Z LOG [SMS cost guard disabled for testing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T21:25:17.116Z LOG [Service area check] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T21:25:17.122Z LOG [Customer SMS reply attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-22T21:25:17.122Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-22T21:25:17.333Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a83e77015dcde1d50883","recipientCount":1}}}
2026-06-22T21:25:17.334Z LOG [Customer SMS reply sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a83e77015dcde1d50883\",\"recipientCount\":1}}"}
2026-06-22T21:25:17.342Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-22T21:25:17.344Z LOG [SMS webhook async AI continuation completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","providerMessageSid":"textbee:6a39a83d77015dcde1d5085d"}
2026-06-22T21:25:51.724Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T21:25:51.725Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a39a86077015dcde1d50ed5"}
2026-06-22T21:25:51.731Z LOG [Inbound SMS linked to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T21:25:51.744Z LOG [Incoming SMS saved to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","messageId":"08864a1c-f10d-4317-b872-3db16bc217a4","messageProviderSid":"textbee:6a39a86077015dcde1d50ed5","mode":"webhook_fast_save"}
2026-06-22T21:25:51.810Z LOG [SMS cost guard disabled for testing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T21:25:51.820Z LOG [Service area check] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T21:25:51.824Z LOG [Customer SMS reply attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-22T21:25:51.824Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-22T21:25:52.521Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a86177015dcde1d50f41","recipientCount":1}}}
2026-06-22T21:25:52.521Z LOG [Customer SMS reply sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a86177015dcde1d50f41\",\"recipientCount\":1}}"}
2026-06-22T21:25:52.529Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-22T21:25:52.531Z LOG [SMS webhook async AI continuation completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","providerMessageSid":"textbee:6a39a86077015dcde1d50ed5"}
2026-06-22T21:26:07.088Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T21:26:07.088Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a39a86f77015dcde1d51206"}
2026-06-22T21:26:07.096Z LOG [Inbound SMS linked to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-22T21:26:07.112Z LOG [Incoming SMS saved to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","messageId":"0b682537-6fd4-4ef7-b4ce-eccc8b4cdf62","messageProviderSid":"textbee:6a39a86f77015dcde1d51206","mode":"webhook_fast_save"}
2026-06-22T21:26:07.128Z LOG [SMS cost guard disabled for testing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-22T21:26:07.136Z LOG [Service area check] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-22T21:26:07.141Z LOG [Customer SMS reply attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-22T21:26:07.142Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-22T21:26:07.333Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a87077015dcde1d5122e","recipientCount":1}}}
2026-06-22T21:26:07.333Z LOG [Customer SMS reply sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a87077015dcde1d5122e\",\"recipientCount\":1}}"}
2026-06-22T21:26:07.364Z LOG [Owner alert check] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-22T21:26:09.402Z LOG [Owner alert sending] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-22T21:26:09.407Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Roaches\nAddress: 33536 Unicorn Ct We","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T21:26:09.407Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":438}
2026-06-22T21:26:09.589Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a87277015dcde1d512e9","recipientCount":1}}}
2026-06-22T21:26:09.589Z LOG [Owner SMS TextBee result] accepted
2026-06-22T21:26:09.589Z LOG [Owner alert sms result] sent/accepted
2026-06-22T21:26:10.080Z LOG [Owner alert email result] sent/accepted
2026-06-22T21:26:10.087Z LOG [Owner alert completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-22T21:26:10.095Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-22T21:26:10.098Z LOG [SMS webhook async AI continuation completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","providerMessageSid":"textbee:6a39a86f77015dcde1d51206"}
2026-06-22T21:30:39.345Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-22T21:30:39.345Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this is urgent now, can you follow up soon as possible","providerMessageSid":"textbee:6a39a98077015dcde1d54076"}
2026-06-22T21:30:39.360Z LOG [Inbound SMS linked to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"waiting_for_customer","mode":"webhook_fast_save"}
2026-06-22T21:30:39.426Z LOG [Incoming SMS saved to lead] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","messageId":"8ece82c1-6297-45f9-935a-d0c9cebb7976","messageProviderSid":"textbee:6a39a98077015dcde1d54076","mode":"webhook_fast_save"}
2026-06-22T21:30:39.439Z LOG [Inbound SMS after completed intake routed to office with customer callback reply] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","bodyPreview":"this is urgent now, can you follow up soon as possible"}
2026-06-22T21:30:39.445Z LOG [Post-lead update mode] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"this is urgent now, can you follow up soon as possible"}
2026-06-22T21:30:39.446Z LOG [Post-lead customer ack suppressed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-22T21:30:39.449Z LOG [Owner lead-update SMS check] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","ownerPhoneConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-22T21:30:39.451Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Roaches\nAddress: 33536 Unicorn Ct Westland,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-22T21:30:39.452Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":212}
2026-06-22T21:30:40.043Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a98077015dcde1d540d3","recipientCount":1}}}
2026-06-22T21:30:40.043Z LOG [Owner SMS TextBee result] accepted
2026-06-22T21:30:40.043Z LOG [Owner lead-update SMS result] sent/accepted
2026-06-22T21:30:40.055Z LOG [Customer SMS reply attempt] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","messageLength":92}
2026-06-22T21:30:40.056Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-22T21:30:41.087Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39a98177015dcde1d5414f","recipientCount":1}}}
2026-06-22T21:30:41.088Z LOG [Customer SMS reply sent] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39a98177015dcde1d5414f\",\"recipientCount\":1}}"}
2026-06-22T21:30:41.094Z LOG [SMS webhook async AI continuation completed] {"leadId":"ff1f0743-63f4-4e89-89f9-0f048d0ecdd1","phone":"+14783092224","providerMessageSid":"textbee:6a39a98077015dcde1d54076"}
2026-06-23T00:08:39.446Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T00:08:39.531Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T00:08:39.532Z LOG Recover Missed Call running on port 3000
2026-06-23T00:08:39.533Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T00:08:39.533Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T00:11:36.977Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:EpadLy3PXMSsEjMJT_sliFFCUT04LuXzTicedF_AXMDvc0odFMUnTQ","callLegId":"19e5a066-6e98-11f1-b006-2a324c16e532","callSessionId":"19e58e6e-6e98-11f1-b0ef-2a324c16e532","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-23T00:11:37.040Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-23T00:11:37.420Z LOG [Telnyx voice command ok: answer]
2026-06-23T00:11:37.421Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:11:37.421Z LOG [Missed-call recovery triggered] {"key":"19e58e6e-6e98-11f1-b0ef-2a324c16e532:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:11:37.441Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-23T00:11:37.756Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:EpadLy3PXMSsEjMJT_sliFFCUT04LuXzTicedF_AXMDvc0odFMUnTQ","callLegId":"19e5a066-6e98-11f1-b006-2a324c16e532","callSessionId":"19e58e6e-6e98-11f1-b0ef-2a324c16e532","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-23T00:11:37.763Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:11:37.763Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:11:37.764Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"19e58e6e-6e98-11f1-b0ef-2a324c16e532:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:11:37.934Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-23T00:11:38.368Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:EpadLy3PXMSsEjMJT_sliFFCUT04LuXzTicedF_AXMDvc0odFMUnTQ","callLegId":"19e5a066-6e98-11f1-b006-2a324c16e532","callSessionId":"19e58e6e-6e98-11f1-b0ef-2a324c16e532","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-23T00:11:38.379Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:11:38.380Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:11:38.380Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"19e58e6e-6e98-11f1-b0ef-2a324c16e532:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:11:38.380Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:11:44.448Z LOG [Missed-call recovery SMS attempt] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-23T00:11:44.449Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-23T00:11:44.660Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cf4177015dcde1df9319","recipientCount":1}}}
2026-06-23T00:11:44.665Z LOG [Missed-call recovery SMS sent] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39cf4177015dcde1df9319\",\"recipientCount\":1}}"}
2026-06-23T00:11:44.675Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-23T00:11:48.933Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:EpadLy3PXMSsEjMJT_sliFFCUT04LuXzTicedF_AXMDvc0odFMUnTQ","callLegId":"19e5a066-6e98-11f1-b006-2a324c16e532","callSessionId":"19e58e6e-6e98-11f1-b0ef-2a324c16e532","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-23T00:11:48.946Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:11:48.947Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:11:48.947Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"19e58e6e-6e98-11f1-b0ef-2a324c16e532:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:11:48.948Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:11:49.129Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-23T00:11:49.293Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:EpadLy3PXMSsEjMJT_sliFFCUT04LuXzTicedF_AXMDvc0odFMUnTQ","callLegId":"19e5a066-6e98-11f1-b006-2a324c16e532","callSessionId":"19e58e6e-6e98-11f1-b0ef-2a324c16e532","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-23T00:11:49.300Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:11:49.300Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:11:49.301Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"19e58e6e-6e98-11f1-b0ef-2a324c16e532:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:12:26.047Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:12:26.049Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 567 Oak Dr, Garden City, MI   Have bees by front door","providerMessageSid":"textbee:6a39cf6a77015dcde1df98e8"}
2026-06-23T00:12:26.058Z LOG [Inbound SMS linked to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-23T00:12:26.070Z LOG [Incoming SMS saved to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","messageId":"01f736ee-1e13-4f30-8753-1e089f500d61","messageProviderSid":"textbee:6a39cf6a77015dcde1df98e8","mode":"webhook_fast_save"}
2026-06-23T00:12:26.084Z LOG [SMS cost guard disabled for testing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:12:26.102Z LOG [Service area check] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:12:26.116Z LOG [Customer SMS reply attempt] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":68}
2026-06-23T00:12:26.116Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-23T00:12:26.406Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cf6b77015dcde1df9919","recipientCount":1}}}
2026-06-23T00:12:26.407Z LOG [Customer SMS reply sent] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39cf6b77015dcde1df9919\",\"recipientCount\":1}}"}
2026-06-23T00:12:26.412Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":false,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — what name should we put on the request?"}
2026-06-23T00:12:26.414Z LOG [SMS webhook async AI continuation completed] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","providerMessageSid":"textbee:6a39cf6a77015dcde1df98e8"}
2026-06-23T00:13:04.286Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:13:04.286Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a39cf9177015dcde1df9d44"}
2026-06-23T00:13:04.294Z LOG [Inbound SMS linked to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:13:04.307Z LOG [Incoming SMS saved to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","messageId":"d6f0073d-1771-49dd-9dea-39cd698b1615","messageProviderSid":"textbee:6a39cf9177015dcde1df9d44","mode":"webhook_fast_save"}
2026-06-23T00:13:04.380Z LOG [SMS cost guard disabled for testing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:13:04.435Z LOG [Deterministic required-field reply captured] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck Simms","hasRequiredLeadDetails":false}
2026-06-23T00:13:04.438Z LOG [Service area check] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:13:04.447Z LOG [Customer SMS reply attempt] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":74}
2026-06-23T00:13:04.448Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-23T00:13:04.660Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cf9177015dcde1df9d8b","recipientCount":1}}}
2026-06-23T00:13:04.660Z LOG [Customer SMS reply sent] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39cf9177015dcde1df9d8b\",\"recipientCount\":1}}"}
2026-06-23T00:13:04.667Z LOG [SMS webhook async AI continuation completed] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","providerMessageSid":"textbee:6a39cf9177015dcde1df9d44"}
2026-06-23T00:13:19.065Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:13:19.066Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a39cf9f77015dcde1dfa014"}
2026-06-23T00:13:19.073Z LOG [Inbound SMS linked to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:13:19.094Z LOG [Incoming SMS saved to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","messageId":"b92b0de3-2bc0-4cfa-a4ad-cc3d6970407c","messageProviderSid":"textbee:6a39cf9f77015dcde1dfa014","mode":"webhook_fast_save"}
2026-06-23T00:13:19.115Z LOG [SMS cost guard disabled for testing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:13:19.141Z LOG [Service area check] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:13:19.148Z LOG [Customer SMS reply attempt] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-23T00:13:19.148Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-23T00:13:19.356Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cfa077015dcde1dfa03a","recipientCount":1}}}
2026-06-23T00:13:19.356Z LOG [Customer SMS reply sent] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39cfa077015dcde1dfa03a\",\"recipientCount\":1}}"}
2026-06-23T00:13:19.362Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-23T00:13:19.363Z LOG [SMS webhook async AI continuation completed] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","providerMessageSid":"textbee:6a39cf9f77015dcde1dfa014"}
2026-06-23T00:13:35.691Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:13:35.692Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a39cfb077015dcde1dfa2cc"}
2026-06-23T00:13:35.699Z LOG [Inbound SMS linked to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:13:35.712Z LOG [Incoming SMS saved to lead] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","messageId":"390be492-32fd-4b31-bd10-1997d9449f0b","messageProviderSid":"textbee:6a39cfb077015dcde1dfa2cc","mode":"webhook_fast_save"}
2026-06-23T00:13:35.728Z LOG [SMS cost guard disabled for testing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:13:35.744Z LOG [Service area check] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:13:35.749Z LOG [Customer SMS reply attempt] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-23T00:13:35.750Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-23T00:13:36.026Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cfb077015dcde1dfa2f2","recipientCount":1}}}
2026-06-23T00:13:36.026Z LOG [Customer SMS reply sent] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39cfb077015dcde1dfa2f2\",\"recipientCount\":1}}"}
2026-06-23T00:13:36.052Z LOG [Owner alert check] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-23T00:13:38.181Z LOG [Owner alert sending] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-23T00:13:38.183Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 567 Oak Dr","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-23T00:13:38.184Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":422}
2026-06-23T00:13:38.364Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39cfb377015dcde1dfa3ac","recipientCount":1}}}
2026-06-23T00:13:38.364Z LOG [Owner SMS TextBee result] accepted
2026-06-23T00:13:38.364Z LOG [Owner alert sms result] sent/accepted
2026-06-23T00:13:38.769Z LOG [Owner alert email result] sent/accepted
2026-06-23T00:13:38.778Z LOG [Owner alert completed] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-23T00:13:38.778Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-23T00:13:38.780Z LOG [SMS webhook async AI continuation completed] {"leadId":"b4285a56-d765-4235-9e9b-bf11cf570d26","phone":"+14783092224","providerMessageSid":"textbee:6a39cfb077015dcde1dfa2cc"}
2026-06-23T00:26:55.417Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T00:26:55.430Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T00:26:55.431Z LOG Recover Missed Call running on port 3000
2026-06-23T00:26:55.431Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T00:26:55.431Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T00:28:02.520Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:yFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw","callLegId":"65371a70-6e9a-11f1-bf3d-02420aef251f","callSessionId":"6537103e-6e9a-11f1-aa2e-02420aef251f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-23T00:28:02.584Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-23T00:28:03.079Z LOG [Telnyx voice command ok: answer]
2026-06-23T00:28:03.079Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:28:03.080Z LOG [Missed-call recovery triggered] {"key":"6537103e-6e9a-11f1-aa2e-02420aef251f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:28:03.103Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-23T00:28:03.469Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:yFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw","callLegId":"65371a70-6e9a-11f1-bf3d-02420aef251f","callSessionId":"6537103e-6e9a-11f1-aa2e-02420aef251f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-23T00:28:03.478Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:28:03.478Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:28:03.479Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6537103e-6e9a-11f1-aa2e-02420aef251f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:28:03.622Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-23T00:28:04.595Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:yFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw","callLegId":"65371a70-6e9a-11f1-bf3d-02420aef251f","callSessionId":"6537103e-6e9a-11f1-aa2e-02420aef251f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-23T00:28:04.601Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:28:04.601Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:28:04.601Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6537103e-6e9a-11f1-aa2e-02420aef251f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:28:04.602Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:28:10.112Z LOG [Missed-call recovery SMS attempt] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-23T00:28:10.113Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-23T00:28:10.485Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d31b77015dcde1e03c4f","recipientCount":1}}}
2026-06-23T00:28:10.491Z LOG [Missed-call recovery SMS sent] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d31b77015dcde1e03c4f\",\"recipientCount\":1}}"}
2026-06-23T00:28:10.500Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-23T00:28:11.838Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:yFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw","callLegId":"65371a70-6e9a-11f1-bf3d-02420aef251f","callSessionId":"6537103e-6e9a-11f1-aa2e-02420aef251f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-23T00:28:11.844Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:28:11.845Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:28:11.845Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6537103e-6e9a-11f1-aa2e-02420aef251f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:28:11.876Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:yFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw","callLegId":"65371a70-6e9a-11f1-bf3d-02420aef251f","callSessionId":"6537103e-6e9a-11f1-aa2e-02420aef251f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-23T00:28:11.910Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:28:11.910Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:28:11.911Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6537103e-6e9a-11f1-aa2e-02420aef251f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:28:11.911Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:28:12.034Z ERROR [Telnyx API error] {"path":"/calls/v3%3AyFJEKPUdjOy1bIuI7PL-q6X65oFU8Vm1WHJVBbCmyQnmigglqtKbhw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-23T00:28:12.035Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-23T00:28:22.008Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:28:22.010Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 567 Oak Dr, Garden City, MI Have bees by front door","providerMessageSid":"textbee:6a39d32677015dcde1e03d36"}
2026-06-23T00:28:22.018Z LOG [Inbound SMS linked to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-23T00:28:22.038Z LOG [Incoming SMS saved to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","messageId":"630ea2d7-6fb8-4eeb-8b55-4e1ce3fb5e17","messageProviderSid":"textbee:6a39d32677015dcde1e03d36","mode":"webhook_fast_save"}
2026-06-23T00:28:22.050Z LOG [SMS cost guard disabled for testing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:28:22.064Z LOG [Service area check] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:28:22.129Z LOG [Customer SMS reply attempt] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-23T00:28:22.129Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-23T00:28:22.331Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d32777015dcde1e03d5c","recipientCount":1}}}
2026-06-23T00:28:22.332Z LOG [Customer SMS reply sent] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d32777015dcde1e03d5c\",\"recipientCount\":1}}"}
2026-06-23T00:28:22.338Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-23T00:28:22.339Z LOG [SMS webhook async AI continuation completed] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","providerMessageSid":"textbee:6a39d32677015dcde1e03d36"}
2026-06-23T00:28:37.046Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:28:37.046Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"HOME","providerMessageSid":"textbee:6a39d33577015dcde1e03f3a"}
2026-06-23T00:28:37.059Z LOG [Inbound SMS linked to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:28:37.068Z LOG [Incoming SMS saved to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","messageId":"8061b85a-b655-461e-b2da-d70a41e9097f","messageProviderSid":"textbee:6a39d33577015dcde1e03f3a","mode":"webhook_fast_save"}
2026-06-23T00:28:37.138Z LOG [SMS cost guard disabled for testing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:28:37.147Z LOG [Service area check] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:28:37.151Z LOG [Customer SMS reply attempt] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-23T00:28:37.152Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-23T00:28:37.369Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d33677015dcde1e03f60","recipientCount":1}}}
2026-06-23T00:28:37.369Z LOG [Customer SMS reply sent] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d33677015dcde1e03f60\",\"recipientCount\":1}}"}
2026-06-23T00:28:37.375Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-23T00:28:37.377Z LOG [SMS webhook async AI continuation completed] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","providerMessageSid":"textbee:6a39d33577015dcde1e03f3a"}
2026-06-23T00:28:54.133Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:28:54.133Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a39d34777015dcde1e04241"}
2026-06-23T00:28:54.142Z LOG [Inbound SMS linked to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:28:54.151Z LOG [Incoming SMS saved to lead] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","messageId":"ea3c218b-689f-43b3-911b-be2db8942d5c","messageProviderSid":"textbee:6a39d34777015dcde1e04241","mode":"webhook_fast_save"}
2026-06-23T00:28:54.161Z LOG [SMS cost guard disabled for testing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:28:54.171Z LOG [Service area check] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:28:54.176Z LOG [Customer SMS reply attempt] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-23T00:28:54.177Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-23T00:28:54.720Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d34777015dcde1e04284","recipientCount":1}}}
2026-06-23T00:28:54.720Z LOG [Customer SMS reply sent] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d34777015dcde1e04284\",\"recipientCount\":1}}"}
2026-06-23T00:28:54.797Z LOG [Owner alert check] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-23T00:28:56.438Z LOG [Owner alert sending] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-23T00:28:56.441Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Stinging Insects\nAddress: 567 Oak Dr","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-23T00:28:56.442Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":461}
2026-06-23T00:28:56.736Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d34977015dcde1e0432e","recipientCount":1}}}
2026-06-23T00:28:56.736Z LOG [Owner SMS TextBee result] accepted
2026-06-23T00:28:56.736Z LOG [Owner alert sms result] sent/accepted
2026-06-23T00:28:57.162Z LOG [Owner alert email result] sent/accepted
2026-06-23T00:28:57.170Z LOG [Owner alert completed] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-23T00:28:57.170Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-23T00:28:57.175Z LOG [SMS webhook async AI continuation completed] {"leadId":"74848fa4-454a-497e-b934-67dad6b5620f","phone":"+14783092224","providerMessageSid":"textbee:6a39d34777015dcde1e04241"}
2026-06-23T00:35:26.629Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T00:35:26.647Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T00:35:26.715Z LOG Recover Missed Call running on port 3000
2026-06-23T00:35:26.715Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T00:35:26.715Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T00:47:07.054Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:h9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw","callLegId":"0faf0556-6e9d-11f1-9cf7-e6c169506d6f","callSessionId":"0faeff70-6e9d-11f1-8945-e6c169506d6f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-23T00:47:07.122Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-23T00:47:07.397Z LOG [Telnyx voice command ok: answer]
2026-06-23T00:47:07.397Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:47:07.398Z LOG [Missed-call recovery triggered] {"key":"0faeff70-6e9d-11f1-8945-e6c169506d6f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T00:47:07.424Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-23T00:47:07.482Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:h9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw","callLegId":"0faf0556-6e9d-11f1-9cf7-e6c169506d6f","callSessionId":"0faeff70-6e9d-11f1-8945-e6c169506d6f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-23T00:47:07.496Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:47:07.496Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:47:07.497Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0faeff70-6e9d-11f1-8945-e6c169506d6f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T00:47:07.593Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-23T00:47:07.913Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:h9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw","callLegId":"0faf0556-6e9d-11f1-9cf7-e6c169506d6f","callSessionId":"0faeff70-6e9d-11f1-8945-e6c169506d6f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-23T00:47:07.927Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:47:07.928Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:47:07.928Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0faeff70-6e9d-11f1-8945-e6c169506d6f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T00:47:07.928Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:47:14.440Z LOG [Missed-call recovery SMS attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-23T00:47:14.441Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-23T00:47:15.318Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d79477015dcde1e1404a","recipientCount":1}}}
2026-06-23T00:47:15.331Z LOG [Missed-call recovery SMS sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d79477015dcde1e1404a\",\"recipientCount\":1}}"}
2026-06-23T00:47:15.403Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-23T00:47:18.451Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:h9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw","callLegId":"0faf0556-6e9d-11f1-9cf7-e6c169506d6f","callSessionId":"0faeff70-6e9d-11f1-8945-e6c169506d6f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-23T00:47:18.459Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:47:18.459Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:47:18.460Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0faeff70-6e9d-11f1-8945-e6c169506d6f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T00:47:18.460Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T00:47:18.479Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:h9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw","callLegId":"0faf0556-6e9d-11f1-9cf7-e6c169506d6f","callSessionId":"0faeff70-6e9d-11f1-8945-e6c169506d6f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-23T00:47:18.486Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-23T00:47:18.487Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:47:18.487Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0faeff70-6e9d-11f1-8945-e6c169506d6f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T00:47:18.548Z ERROR [Telnyx API error] {"path":"/calls/v3%3Ah9nzgAwduJDdJDy42w7YaCHZc4BSzC2KIQKge6YZ0qKkaWhCYaCefw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-23T00:47:18.549Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-23T00:47:30.526Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:47:30.527Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"rats in basement","providerMessageSid":"textbee:6a39d7a277015dcde1e14813"}
2026-06-23T00:47:30.535Z LOG [Inbound SMS linked to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-23T00:47:30.548Z LOG [Incoming SMS saved to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","messageId":"625d7817-2b5f-46e4-8298-e4300426f0a0","messageProviderSid":"textbee:6a39d7a277015dcde1e14813","mode":"webhook_fast_save"}
2026-06-23T00:47:30.560Z LOG [SMS cost guard disabled for testing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:47:30.587Z LOG [Business-related inbound revived AI intake] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","status":"intake","bodyPreview":"rats in basement"}
2026-06-23T00:47:31.971Z LOG [Customer SMS reply attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-23T00:47:31.971Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-23T00:47:34.681Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7a677015dcde1e14b36","recipientCount":1}}}
2026-06-23T00:47:34.682Z LOG [Customer SMS reply sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d7a677015dcde1e14b36\",\"recipientCount\":1}}"}
2026-06-23T00:47:34.695Z LOG [Owner alert check] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-23T00:47:34.695Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Mice/Rats","reason":"not enough qualified details yet"}
2026-06-23T00:47:34.697Z LOG [SMS webhook async AI continuation completed] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","providerMessageSid":"textbee:6a39d7a277015dcde1e14813"}
2026-06-23T00:47:55.201Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:47:55.201Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a39d7bc77015dcde1e15906"}
2026-06-23T00:47:55.207Z LOG [Inbound SMS linked to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:47:55.219Z LOG [Incoming SMS saved to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","messageId":"9251c318-337b-4f36-b866-f1cf2044a1ca","messageProviderSid":"textbee:6a39d7bc77015dcde1e15906","mode":"webhook_fast_save"}
2026-06-23T00:47:55.228Z LOG [SMS cost guard disabled for testing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:47:55.250Z LOG [Deterministic required-field reply captured] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-23T00:47:55.257Z LOG [Customer SMS reply attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-23T00:47:55.257Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-23T00:47:55.468Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7bc77015dcde1e1592c","recipientCount":1}}}
2026-06-23T00:47:55.469Z LOG [Customer SMS reply sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d7bc77015dcde1e1592c\",\"recipientCount\":1}}"}
2026-06-23T00:47:55.476Z LOG [SMS webhook async AI continuation completed] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","providerMessageSid":"textbee:6a39d7bc77015dcde1e15906"}
2026-06-23T00:48:13.268Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:48:13.268Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"123 Main St, Westland, MI 48186","providerMessageSid":"textbee:6a39d7ce77015dcde1e16372"}
2026-06-23T00:48:13.275Z LOG [Inbound SMS linked to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:48:13.335Z LOG [Incoming SMS saved to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","messageId":"5c362eaa-7b6e-4ddc-ba85-9080d92073d8","messageProviderSid":"textbee:6a39d7ce77015dcde1e16372","mode":"webhook_fast_save"}
2026-06-23T00:48:13.343Z LOG [SMS cost guard disabled for testing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:48:13.353Z LOG [Service area check] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:48:13.357Z LOG [Customer SMS reply attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-23T00:48:13.357Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-23T00:48:14.711Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7cf77015dcde1e16431","recipientCount":1}}}
2026-06-23T00:48:14.711Z LOG [Customer SMS reply sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d7cf77015dcde1e16431\",\"recipientCount\":1}}"}
2026-06-23T00:48:14.718Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-23T00:48:14.719Z LOG [SMS webhook async AI continuation completed] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","providerMessageSid":"textbee:6a39d7ce77015dcde1e16372"}
2026-06-23T00:48:30.866Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:48:30.866Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"business","providerMessageSid":"textbee:6a39d7df77015dcde1e16fa3"}
2026-06-23T00:48:30.872Z LOG [Inbound SMS linked to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:48:30.881Z LOG [Incoming SMS saved to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","messageId":"93299bb9-04c1-4f78-a88e-ff06e5c6ad96","messageProviderSid":"textbee:6a39d7df77015dcde1e16fa3","mode":"webhook_fast_save"}
2026-06-23T00:48:30.888Z LOG [SMS cost guard disabled for testing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:48:30.897Z LOG [Service area check] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T00:48:30.900Z LOG [Customer SMS reply attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-23T00:48:30.900Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-23T00:48:32.623Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7e177015dcde1e170c7","recipientCount":1}}}
2026-06-23T00:48:32.623Z LOG [Customer SMS reply sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d7e177015dcde1e170c7\",\"recipientCount\":1}}"}
2026-06-23T00:48:32.630Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-23T00:48:32.633Z LOG [SMS webhook async AI continuation completed] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","providerMessageSid":"textbee:6a39d7df77015dcde1e16fa3"}
2026-06-23T00:48:52.096Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T00:48:52.096Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"estimate","providerMessageSid":"textbee:6a39d7f477015dcde1e17c4a"}
2026-06-23T00:48:52.104Z LOG [Inbound SMS linked to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T00:48:52.112Z LOG [Incoming SMS saved to lead] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","messageId":"722c9951-b947-4dad-9643-6bb196b13dde","messageProviderSid":"textbee:6a39d7f477015dcde1e17c4a","mode":"webhook_fast_save"}
2026-06-23T00:48:52.120Z LOG [SMS cost guard disabled for testing] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-23T00:48:52.129Z LOG [Customer SMS reply attempt] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"dispatcher_guardrail_complex_unsupported","provider":"textbee","messageLength":172}
2026-06-23T00:48:52.130Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":172}
2026-06-23T00:48:52.570Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7f577015dcde1e17cb0","recipientCount":1}}}
2026-06-23T00:48:52.570Z LOG [Customer SMS reply sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","context":"dispatcher_guardrail_complex_unsupported","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a39d7f577015dcde1e17cb0\",\"recipientCount\":1}}"}
2026-06-23T00:48:52.580Z LOG [Owner lead-update alert check] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":0}
2026-06-23T00:48:52.583Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Mice/Rats\nAddress: 123 Main St, Westland, MI 4818","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-23T00:48:52.583Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":320}
2026-06-23T00:48:52.982Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39d7f577015dcde1e17d3c","recipientCount":1}}}
2026-06-23T00:48:52.983Z LOG [Owner SMS TextBee result] accepted
2026-06-23T00:48:52.983Z LOG [Owner alert lead-update sms result] sent/accepted
2026-06-23T00:48:53.189Z LOG [Owner alert lead-update email result] sent/accepted
2026-06-23T00:48:53.196Z LOG [Owner lead-update alert results] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","smsSent":true,"emailSent":true,"results":[{"label":"lead-update sms","ok":true,"skipped":false},{"label":"lead-update email","ok":true,"skipped":false}]}
2026-06-23T00:48:53.261Z LOG [AI Dispatcher Guardrail human deferral sent] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","category":"complex_unsupported","reason":"Specific pricing, quote, discount, fee, or estimate questions require office confirmation.","customerReplySent":true}
2026-06-23T00:48:53.263Z LOG [SMS webhook async AI continuation completed] {"leadId":"474fda8e-ae85-4a0f-a657-e3eed6fb322f","phone":"+14783092224","providerMessageSid":"textbee:6a39d7f477015dcde1e17c4a"}
2026-06-23T01:35:26.658Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":135}
2026-06-23T01:35:26.957Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a39e2df77015dcde1e4c00f","recipientCount":1}}}
2026-06-23T08:38:19.411Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T08:38:19.513Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T08:38:19.515Z LOG Recover Missed Call running on port 3000
2026-06-23T08:38:19.515Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T08:38:19.515Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T08:48:18.032Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T08:48:18.118Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T08:48:18.120Z LOG Recover Missed Call running on port 3000
2026-06-23T08:48:18.120Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T08:48:18.121Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T08:59:11.608Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T08:59:11.639Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T08:59:11.705Z LOG Recover Missed Call running on port 3000
2026-06-23T08:59:11.706Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T08:59:11.706Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T09:13:32.524Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T09:13:32.612Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T09:13:32.614Z LOG Recover Missed Call running on port 3000
2026-06-23T09:13:32.614Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T09:13:32.614Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T12:02:31.813Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T12:02:31.913Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T12:02:31.916Z LOG Recover Missed Call running on port 3000
2026-06-23T12:02:31.916Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T12:02:31.916Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T16:22:05.550Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:vpgR_ay63ASaCgimKS3B4xvENVxsyN1YdCMVNJzbgG5mJUipG-VuDQ","callLegId":"ac5cc01e-6f1f-11f1-9816-f64e225414f5","callSessionId":"ac5cb790-6f1f-11f1-92dd-f64e225414f5","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-23T16:22:05.989Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-23T16:22:06.418Z LOG [Telnyx voice command ok: answer]
2026-06-23T16:22:06.418Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T16:22:06.420Z LOG [Missed-call recovery triggered] {"key":"ac5cb790-6f1f-11f1-92dd-f64e225414f5:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-23T16:22:06.445Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-23T16:22:06.521Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:vpgR_ay63ASaCgimKS3B4xvENVxsyN1YdCMVNJzbgG5mJUipG-VuDQ","callLegId":"ac5cc01e-6f1f-11f1-9816-f64e225414f5","callSessionId":"ac5cb790-6f1f-11f1-92dd-f64e225414f5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-23T16:22:06.536Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-23T16:22:06.536Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T16:22:06.537Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac5cb790-6f1f-11f1-92dd-f64e225414f5:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-23T16:22:06.624Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-23T16:22:06.919Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:vpgR_ay63ASaCgimKS3B4xvENVxsyN1YdCMVNJzbgG5mJUipG-VuDQ","callLegId":"ac5cc01e-6f1f-11f1-9816-f64e225414f5","callSessionId":"ac5cb790-6f1f-11f1-92dd-f64e225414f5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-23T16:22:06.933Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-23T16:22:06.934Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T16:22:06.934Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac5cb790-6f1f-11f1-92dd-f64e225414f5:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-23T16:22:06.934Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T16:22:13.464Z LOG [Missed-call recovery SMS attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-23T16:22:13.465Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-23T16:22:13.798Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab2b677015dcde12ae0c6","recipientCount":1}}}
2026-06-23T16:22:13.812Z LOG [Missed-call recovery SMS sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab2b677015dcde12ae0c6\",\"recipientCount\":1}}"}
2026-06-23T16:22:13.884Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-23T16:22:17.440Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:vpgR_ay63ASaCgimKS3B4xvENVxsyN1YdCMVNJzbgG5mJUipG-VuDQ","callLegId":"ac5cc01e-6f1f-11f1-9816-f64e225414f5","callSessionId":"ac5cb790-6f1f-11f1-92dd-f64e225414f5","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-23T16:22:17.483Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-23T16:22:17.484Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T16:22:17.484Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac5cb790-6f1f-11f1-92dd-f64e225414f5:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-23T16:22:17.484Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-23T16:22:17.606Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-23T16:22:17.684Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:vpgR_ay63ASaCgimKS3B4xvENVxsyN1YdCMVNJzbgG5mJUipG-VuDQ","callLegId":"ac5cc01e-6f1f-11f1-9816-f64e225414f5","callSessionId":"ac5cb790-6f1f-11f1-92dd-f64e225414f5","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-23T16:22:17.695Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-23T16:22:17.695Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T16:22:17.695Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"ac5cb790-6f1f-11f1-92dd-f64e225414f5:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-23T16:22:44.181Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T16:22:44.183Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Help with ants","providerMessageSid":"textbee:6a3ab2d477015dcde12ae449"}
2026-06-23T16:22:44.192Z LOG [Inbound SMS linked to lead] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-23T16:22:44.237Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","messageId":"b6bc15de-d3f5-40f4-afe1-bba46b952243","messageProviderSid":"textbee:6a3ab2d477015dcde12ae449","mode":"webhook_fast_save"}
2026-06-23T16:22:44.250Z LOG [SMS cost guard disabled for testing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-23T16:22:44.335Z LOG [Business-related inbound revived AI intake] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"intake","bodyPreview":"Help with ants"}
2026-06-23T16:22:46.874Z LOG [Customer SMS reply attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":68}
2026-06-23T16:22:46.874Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":68}
2026-06-23T16:22:47.118Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab2d777015dcde12ae4ca","recipientCount":1}}}
2026-06-23T16:22:47.118Z LOG [Customer SMS reply sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab2d777015dcde12ae4ca\",\"recipientCount\":1}}"}
2026-06-23T16:22:47.132Z LOG [Owner alert check] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":false,"serviceAddressPresent":false,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-23T16:22:47.133Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-23T16:22:47.134Z LOG [SMS webhook async AI continuation completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","providerMessageSid":"textbee:6a3ab2d477015dcde12ae449"}
2026-06-23T16:23:00.543Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T16:23:00.544Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Stacy","providerMessageSid":"textbee:6a3ab2e477015dcde12ae643"}
2026-06-23T16:23:00.556Z LOG [Inbound SMS linked to lead] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T16:23:00.605Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","messageId":"cbbae31a-cfdf-4e33-a510-aa6d4904edf0","messageProviderSid":"textbee:6a3ab2e477015dcde12ae643","mode":"webhook_fast_save"}
2026-06-23T16:23:00.624Z LOG [SMS cost guard disabled for testing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-23T16:23:00.689Z LOG [Deterministic required-field reply captured] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","expectedField":"customer_name","capturedValue":"Stacy","hasRequiredLeadDetails":false}
2026-06-23T16:23:00.695Z LOG [Customer SMS reply attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":62}
2026-06-23T16:23:00.695Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":62}
2026-06-23T16:23:00.950Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab2e577015dcde12ae682","recipientCount":1}}}
2026-06-23T16:23:00.951Z LOG [Customer SMS reply sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab2e577015dcde12ae682\",\"recipientCount\":1}}"}
2026-06-23T16:23:00.960Z LOG [SMS webhook async AI continuation completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","providerMessageSid":"textbee:6a3ab2e477015dcde12ae643"}
2026-06-23T16:23:20.468Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T16:23:20.468Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"133 main st garden city mi","providerMessageSid":"textbee:6a3ab2f877015dcde12aead4"}
2026-06-23T16:23:20.475Z LOG [Inbound SMS linked to lead] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T16:23:20.499Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","messageId":"f7eb9403-023a-41b0-9230-972f723f371a","messageProviderSid":"textbee:6a3ab2f877015dcde12aead4","mode":"webhook_fast_save"}
2026-06-23T16:23:20.506Z LOG [SMS cost guard disabled for testing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-23T16:23:20.530Z LOG [Service area check] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T16:23:20.534Z LOG [Customer SMS reply attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_continuation","provider":"textbee","messageLength":74}
2026-06-23T16:23:20.534Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":74}
2026-06-23T16:23:20.749Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab2f977015dcde12aeafa","recipientCount":1}}}
2026-06-23T16:23:20.749Z LOG [Customer SMS reply sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab2f977015dcde12aeafa\",\"recipientCount\":1}}"}
2026-06-23T16:23:20.757Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this a residential or commercial property?"}
2026-06-23T16:23:20.758Z LOG [SMS webhook async AI continuation completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","providerMessageSid":"textbee:6a3ab2f877015dcde12aead4"}
2026-06-23T16:23:37.083Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T16:23:37.083Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Home","providerMessageSid":"textbee:6a3ab30977015dcde12aee77"}
2026-06-23T16:23:37.092Z LOG [Inbound SMS linked to lead] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T16:23:37.166Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","messageId":"ea2ad296-4573-463d-857a-79566c9aacdc","messageProviderSid":"textbee:6a3ab30977015dcde12aee77","mode":"webhook_fast_save"}
2026-06-23T16:23:37.177Z LOG [SMS cost guard disabled for testing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-23T16:23:37.188Z LOG [Service area check] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T16:23:37.192Z LOG [Customer SMS reply attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-23T16:23:37.192Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-23T16:23:37.411Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab30977015dcde12aeeab","recipientCount":1}}}
2026-06-23T16:23:37.411Z LOG [Customer SMS reply sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab30977015dcde12aeeab\",\"recipientCount\":1}}"}
2026-06-23T16:23:37.418Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-23T16:23:37.419Z LOG [SMS webhook async AI continuation completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","providerMessageSid":"textbee:6a3ab30977015dcde12aee77"}
2026-06-23T16:24:17.595Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-23T16:24:17.596Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"This week","providerMessageSid":"textbee:6a3ab33177015dcde12af62a"}
2026-06-23T16:24:17.605Z LOG [Inbound SMS linked to lead] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-23T16:24:17.678Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","messageId":"0d943138-fbcc-4b05-8144-2f96252962bb","messageProviderSid":"textbee:6a3ab33177015dcde12af62a","mode":"webhook_fast_save"}
2026-06-23T16:24:17.689Z LOG [SMS cost guard disabled for testing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-23T16:24:17.699Z LOG [Service area check] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-23T16:24:17.705Z LOG [Customer SMS reply attempt] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_message_final","provider":"textbee","messageLength":95}
2026-06-23T16:24:17.705Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":95}
2026-06-23T16:24:17.895Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab33277015dcde12af653","recipientCount":1}}}
2026-06-23T16:24:17.895Z LOG [Customer SMS reply sent] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ab33277015dcde12af653\",\"recipientCount\":1}}"}
2026-06-23T16:24:17.921Z LOG [Owner alert check] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-23T16:24:19.567Z LOG [Owner alert sending] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-23T16:24:19.569Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Stacy\nPhone: +13133141123\nIssue: Ants\nAddress: 133 main st garden city mi\nU","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-23T16:24:19.569Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":414}
2026-06-23T16:24:19.767Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ab33477015dcde12af6ee","recipientCount":1}}}
2026-06-23T16:24:19.767Z LOG [Owner SMS TextBee result] accepted
2026-06-23T16:24:19.767Z LOG [Owner alert sms result] sent/accepted
2026-06-23T16:24:20.228Z LOG [Owner alert email result] sent/accepted
2026-06-23T16:24:20.237Z LOG [Owner alert completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-23T16:24:20.237Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — I have your details. The office will review and reach out shortly."}
2026-06-23T16:24:20.239Z LOG [SMS webhook async AI continuation completed] {"leadId":"250fbacd-2baf-408e-8b0e-165d37d9ac19","phone":"+13133141123","providerMessageSid":"textbee:6a3ab33177015dcde12af62a"}
2026-06-23T21:51:08.342Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T21:51:08.451Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T21:51:08.455Z LOG Recover Missed Call running on port 3000
2026-06-23T21:51:08.455Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T21:51:08.455Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-23T23:30:32.228Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-23T23:30:32.316Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-23T23:30:32.320Z LOG Recover Missed Call running on port 3000
2026-06-23T23:30:32.320Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-23T23:30:32.321Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T05:39:00.569Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T05:39:00.673Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T05:39:00.675Z LOG Recover Missed Call running on port 3000
2026-06-24T05:39:00.675Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T05:39:00.675Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T15:41:27.644Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T15:41:27.731Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T15:41:27.733Z LOG Recover Missed Call running on port 3000
2026-06-24T15:41:27.733Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T15:41:27.733Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T15:41:46.902Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Z5eFLGxwtmdb7Rq8noa_s4iKwvgsxmPxcT1vXBfNk378qUqbcZxOGQ","callLegId":"35595012-6fe3-11f1-8881-02420aef8ba0","callSessionId":"3559457c-6fe3-11f1-a524-02420aef8ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T15:41:47.156Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T15:41:47.342Z LOG [Telnyx voice command ok: answer]
2026-06-24T15:41:47.342Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T15:41:47.343Z LOG [Missed-call recovery triggered] {"key":"3559457c-6fe3-11f1-a524-02420aef8ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T15:41:47.367Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T15:41:47.479Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:Z5eFLGxwtmdb7Rq8noa_s4iKwvgsxmPxcT1vXBfNk378qUqbcZxOGQ","callLegId":"35595012-6fe3-11f1-8881-02420aef8ba0","callSessionId":"3559457c-6fe3-11f1-a524-02420aef8ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T15:41:47.496Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T15:41:47.496Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T15:41:47.497Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3559457c-6fe3-11f1-a524-02420aef8ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T15:41:47.558Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T15:41:47.883Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:Z5eFLGxwtmdb7Rq8noa_s4iKwvgsxmPxcT1vXBfNk378qUqbcZxOGQ","callLegId":"35595012-6fe3-11f1-8881-02420aef8ba0","callSessionId":"3559457c-6fe3-11f1-a524-02420aef8ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T15:41:47.897Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T15:41:47.897Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T15:41:47.898Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3559457c-6fe3-11f1-a524-02420aef8ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T15:41:47.898Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T15:41:54.385Z LOG [Missed-call recovery SMS attempt] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T15:41:54.386Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T15:41:54.612Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfac277015dcde1926d97","recipientCount":1}}}
2026-06-24T15:41:54.627Z LOG [Missed-call recovery SMS sent] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3bfac277015dcde1926d97\",\"recipientCount\":1}}"}
2026-06-24T15:41:54.700Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T15:41:57.460Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:Z5eFLGxwtmdb7Rq8noa_s4iKwvgsxmPxcT1vXBfNk378qUqbcZxOGQ","callLegId":"35595012-6fe3-11f1-8881-02420aef8ba0","callSessionId":"3559457c-6fe3-11f1-a524-02420aef8ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T15:41:57.470Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T15:41:57.471Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T15:41:57.471Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3559457c-6fe3-11f1-a524-02420aef8ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T15:41:57.471Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T15:41:57.566Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T15:41:57.645Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:Z5eFLGxwtmdb7Rq8noa_s4iKwvgsxmPxcT1vXBfNk378qUqbcZxOGQ","callLegId":"35595012-6fe3-11f1-8881-02420aef8ba0","callSessionId":"3559457c-6fe3-11f1-a524-02420aef8ba0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T15:41:57.654Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T15:41:57.654Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T15:41:57.655Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3559457c-6fe3-11f1-a524-02420aef8ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T15:42:42.490Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T15:42:42.492Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Have ants around the front door and back door, Chuck Simms, 33536 Unicorn Ct Wes","providerMessageSid":"textbee:6a3bfaf277015dcde1927326"}
2026-06-24T15:42:42.501Z LOG [Inbound SMS linked to lead] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T15:42:42.548Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","messageId":"79442e9c-af88-4aa4-8c21-10ecfba952e4","messageProviderSid":"textbee:6a3bfaf277015dcde1927326","mode":"webhook_fast_save"}
2026-06-24T15:42:42.561Z LOG [SMS cost guard disabled for testing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T15:42:42.656Z LOG [Service area check] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T15:42:42.661Z LOG [Customer SMS reply attempt] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":109}
2026-06-24T15:42:42.661Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":109}
2026-06-24T15:42:43.228Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfaf377015dcde19273f0","recipientCount":1}}}
2026-06-24T15:42:43.229Z LOG [Customer SMS reply sent] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3bfaf377015dcde19273f0\",\"recipientCount\":1}}"}
2026-06-24T15:42:43.235Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":false,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — we’ll help get this to the right person. What name should we put on the request?"}
2026-06-24T15:42:43.236Z LOG [SMS webhook async AI continuation completed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","providerMessageSid":"textbee:6a3bfaf277015dcde1927326"}
2026-06-24T15:43:05.100Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T15:43:05.100Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a3bfb0977015dcde1927eb0"}
2026-06-24T15:43:05.106Z LOG [Inbound SMS linked to lead] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T15:43:05.134Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","messageId":"a7207211-165e-4e3d-b675-003b85424293","messageProviderSid":"textbee:6a3bfb0977015dcde1927eb0","mode":"webhook_fast_save"}
2026-06-24T15:43:05.198Z LOG [SMS cost guard disabled for testing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T15:43:05.252Z LOG [Deterministic required-field reply captured] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck Simms","hasRequiredLeadDetails":false}
2026-06-24T15:43:05.255Z LOG [Service area check] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T15:43:05.259Z LOG [Customer SMS reply attempt] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":94}
2026-06-24T15:43:05.259Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-24T15:43:05.827Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfb0a77015dcde1927f3c","recipientCount":1}}}
2026-06-24T15:43:05.827Z LOG [Customer SMS reply sent] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3bfb0a77015dcde1927f3c\",\"recipientCount\":1}}"}
2026-06-24T15:43:05.835Z LOG [SMS webhook async AI continuation completed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","providerMessageSid":"textbee:6a3bfb0977015dcde1927eb0"}
2026-06-24T15:43:22.272Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T15:43:22.273Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3bfb1a77015dcde19287fa"}
2026-06-24T15:43:22.279Z LOG [Inbound SMS linked to lead] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T15:43:22.294Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","messageId":"56a6a430-1619-4a00-85e5-cfa0428461db","messageProviderSid":"textbee:6a3bfb1a77015dcde19287fa","mode":"webhook_fast_save"}
2026-06-24T15:43:22.301Z LOG [SMS cost guard disabled for testing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T15:43:22.309Z LOG [Service area check] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T15:43:22.313Z LOG [Customer SMS reply attempt] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-24T15:43:22.313Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-24T15:43:22.578Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfb1a77015dcde1928820","recipientCount":1}}}
2026-06-24T15:43:22.578Z LOG [Customer SMS reply sent] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3bfb1a77015dcde1928820\",\"recipientCount\":1}}"}
2026-06-24T15:43:22.585Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-24T15:43:22.587Z LOG [SMS webhook async AI continuation completed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","providerMessageSid":"textbee:6a3bfb1a77015dcde19287fa"}
2026-06-24T15:43:39.534Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T15:43:39.535Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a3bfb2b77015dcde1928a5f"}
2026-06-24T15:43:39.542Z LOG [Inbound SMS linked to lead] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T15:43:39.558Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","messageId":"42052bcd-23bd-4595-b5d2-791ea3d92989","messageProviderSid":"textbee:6a3bfb2b77015dcde1928a5f","mode":"webhook_fast_save"}
2026-06-24T15:43:39.569Z LOG [SMS cost guard disabled for testing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T15:43:39.584Z LOG [Service area check] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T15:43:39.635Z LOG [Customer SMS reply attempt] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":108}
2026-06-24T15:43:39.635Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T15:43:40.531Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfb2c77015dcde1928a9f","recipientCount":1}}}
2026-06-24T15:43:40.531Z LOG [Customer SMS reply sent] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3bfb2c77015dcde1928a9f\",\"recipientCount\":1}}"}
2026-06-24T15:43:40.559Z LOG [Owner alert check] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-24T15:43:44.156Z LOG [Owner alert sending] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T15:43:44.157Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 33536 Unicorn Ct Westl","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T15:43:44.158Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":485}
2026-06-24T15:43:44.464Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3bfb3077015dcde1928bee","recipientCount":1}}}
2026-06-24T15:43:44.464Z LOG [Owner SMS TextBee result] accepted
2026-06-24T15:43:44.464Z LOG [Owner alert sms result] sent/accepted
2026-06-24T15:43:44.814Z LOG [Owner alert email result] sent/accepted
2026-06-24T15:43:44.822Z LOG [Owner alert completed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T15:43:44.822Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T15:43:44.824Z LOG [SMS webhook async AI continuation completed] {"leadId":"442757e9-f45f-4579-a770-00ca388e846d","phone":"+14783092224","providerMessageSid":"textbee:6a3bfb2b77015dcde1928a5f"}
2026-06-24T15:54:19.861Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T15:54:19.942Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T15:54:19.943Z LOG Recover Missed Call running on port 3000
2026-06-24T15:54:19.943Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T15:54:19.944Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:03:55.533Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:03:55.637Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:03:55.639Z LOG Recover Missed Call running on port 3000
2026-06-24T16:03:55.640Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:03:55.640Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:09:21.442Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:09:21.530Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:09:21.531Z LOG Recover Missed Call running on port 3000
2026-06-24T16:09:21.531Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:09:21.531Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:10:35.735Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:f0H7cnmQnDTzjQU8_1qbiAUfiMp204bnZ38SU_1OnDqTdcWmzYSODQ","callLegId":"3bd2bcc2-6fe7-11f1-bef6-7e365466830a","callSessionId":"3bd2b592-6fe7-11f1-8872-7e365466830a","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T16:10:35.809Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T16:10:36.100Z LOG [Telnyx voice command ok: answer]
2026-06-24T16:10:36.101Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T16:10:36.101Z LOG [Missed-call recovery triggered] {"key":"3bd2b592-6fe7-11f1-8872-7e365466830a:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T16:10:36.170Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T16:10:36.178Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:f0H7cnmQnDTzjQU8_1qbiAUfiMp204bnZ38SU_1OnDqTdcWmzYSODQ","callLegId":"3bd2bcc2-6fe7-11f1-bef6-7e365466830a","callSessionId":"3bd2b592-6fe7-11f1-8872-7e365466830a","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T16:10:36.188Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T16:10:36.188Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T16:10:36.189Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3bd2b592-6fe7-11f1-8872-7e365466830a:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T16:10:36.301Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T16:10:36.616Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:f0H7cnmQnDTzjQU8_1qbiAUfiMp204bnZ38SU_1OnDqTdcWmzYSODQ","callLegId":"3bd2bcc2-6fe7-11f1-bef6-7e365466830a","callSessionId":"3bd2b592-6fe7-11f1-8872-7e365466830a","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T16:10:36.625Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T16:10:36.626Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T16:10:36.626Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3bd2b592-6fe7-11f1-8872-7e365466830a:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T16:10:36.627Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T16:10:43.182Z LOG [Missed-call recovery SMS attempt] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T16:10:43.183Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T16:10:43.385Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c018377015dcde1953cba","recipientCount":1}}}
2026-06-24T16:10:43.391Z LOG [Missed-call recovery SMS sent] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c018377015dcde1953cba\",\"recipientCount\":1}}"}
2026-06-24T16:10:43.401Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T16:10:46.151Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:f0H7cnmQnDTzjQU8_1qbiAUfiMp204bnZ38SU_1OnDqTdcWmzYSODQ","callLegId":"3bd2bcc2-6fe7-11f1-bef6-7e365466830a","callSessionId":"3bd2b592-6fe7-11f1-8872-7e365466830a","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T16:10:46.160Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T16:10:46.160Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T16:10:46.161Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3bd2b592-6fe7-11f1-8872-7e365466830a:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T16:10:46.161Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T16:10:46.288Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T16:10:46.380Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:f0H7cnmQnDTzjQU8_1qbiAUfiMp204bnZ38SU_1OnDqTdcWmzYSODQ","callLegId":"3bd2bcc2-6fe7-11f1-bef6-7e365466830a","callSessionId":"3bd2b592-6fe7-11f1-8872-7e365466830a","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T16:10:46.386Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T16:10:46.386Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T16:10:46.386Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"3bd2b592-6fe7-11f1-8872-7e365466830a:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T16:11:31.277Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T16:11:31.279Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186, rats in the basement, Chuck Simms","providerMessageSid":"textbee:6a3c01b377015dcde1954778"}
2026-06-24T16:11:31.287Z LOG [Inbound SMS linked to lead] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T16:11:31.334Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","messageId":"839d23cd-5795-42c5-b6e2-23ef13d36b80","messageProviderSid":"textbee:6a3c01b377015dcde1954778","mode":"webhook_fast_save"}
2026-06-24T16:11:31.347Z LOG [SMS cost guard disabled for testing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T16:11:31.395Z LOG [Service area check] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T16:11:31.400Z LOG [Customer SMS reply attempt] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":109}
2026-06-24T16:11:31.400Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":109}
2026-06-24T16:11:31.743Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c01b477015dcde19547b4","recipientCount":1}}}
2026-06-24T16:11:31.743Z LOG [Customer SMS reply sent] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c01b477015dcde19547b4\",\"recipientCount\":1}}"}
2026-06-24T16:11:31.754Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":false,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — we’ll help get this to the right person. What name should we put on the request?"}
2026-06-24T16:11:31.757Z LOG [SMS webhook async AI continuation completed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","providerMessageSid":"textbee:6a3c01b377015dcde1954778"}
2026-06-24T16:11:49.864Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T16:11:49.865Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms","providerMessageSid":"textbee:6a3c01c677015dcde1954ba5"}
2026-06-24T16:11:49.873Z LOG [Inbound SMS linked to lead] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T16:11:49.940Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","messageId":"c0adff6f-3df2-4f45-beb5-2adcc286f093","messageProviderSid":"textbee:6a3c01c677015dcde1954ba5","mode":"webhook_fast_save"}
2026-06-24T16:11:49.951Z LOG [SMS cost guard disabled for testing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T16:11:50.065Z LOG [Deterministic required-field reply captured] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","expectedField":"customer_name","capturedValue":"Chuck Simms","hasRequiredLeadDetails":false}
2026-06-24T16:11:50.067Z LOG [Service area check] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T16:11:50.072Z LOG [Customer SMS reply attempt] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":94}
2026-06-24T16:11:50.072Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-24T16:11:50.319Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c01c677015dcde1954bd1","recipientCount":1}}}
2026-06-24T16:11:50.319Z LOG [Customer SMS reply sent] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c01c677015dcde1954bd1\",\"recipientCount\":1}}"}
2026-06-24T16:11:50.326Z LOG [SMS webhook async AI continuation completed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","providerMessageSid":"textbee:6a3c01c677015dcde1954ba5"}
2026-06-24T16:12:07.593Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T16:12:07.594Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3c01d777015dcde19552de"}
2026-06-24T16:12:07.600Z LOG [Inbound SMS linked to lead] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T16:12:07.616Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","messageId":"197eef68-bc2a-446b-b20b-7c00bec5d1cd","messageProviderSid":"textbee:6a3c01d777015dcde19552de","mode":"webhook_fast_save"}
2026-06-24T16:12:07.688Z LOG [SMS cost guard disabled for testing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T16:12:07.700Z LOG [Service area check] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T16:12:07.705Z LOG [Customer SMS reply attempt] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-24T16:12:07.706Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-24T16:12:07.951Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c01d877015dcde195533a","recipientCount":1}}}
2026-06-24T16:12:07.952Z LOG [Customer SMS reply sent] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c01d877015dcde195533a\",\"recipientCount\":1}}"}
2026-06-24T16:12:07.958Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-24T16:12:07.959Z LOG [SMS webhook async AI continuation completed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","providerMessageSid":"textbee:6a3c01d777015dcde19552de"}
2026-06-24T16:12:29.558Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T16:12:29.558Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"today if possible","providerMessageSid":"textbee:6a3c01ed77015dcde1955b1b"}
2026-06-24T16:12:29.565Z LOG [Inbound SMS linked to lead] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T16:12:29.579Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","messageId":"95435ebb-f15e-441d-aaef-cf51056670d2","messageProviderSid":"textbee:6a3c01ed77015dcde1955b1b","mode":"webhook_fast_save"}
2026-06-24T16:12:29.604Z LOG [SMS cost guard disabled for testing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T16:12:29.619Z LOG [Service area check] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T16:12:29.624Z LOG [Customer SMS reply attempt] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":108}
2026-06-24T16:12:29.625Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T16:12:29.963Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c01ee77015dcde1955b47","recipientCount":1}}}
2026-06-24T16:12:29.964Z LOG [Customer SMS reply sent] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c01ee77015dcde1955b47\",\"recipientCount\":1}}"}
2026-06-24T16:12:30.005Z LOG [Owner alert check] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-24T16:12:31.924Z LOG [Owner alert sending] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T16:12:31.928Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Mice/Rats\nAddress: 33536 Unicorn Ct,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T16:12:31.929Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":430}
2026-06-24T16:12:32.226Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c01f077015dcde1955c2c","recipientCount":1}}}
2026-06-24T16:12:32.227Z LOG [Owner SMS TextBee result] accepted
2026-06-24T16:12:32.227Z LOG [Owner alert sms result] sent/accepted
2026-06-24T16:12:32.436Z LOG [Owner alert email result] sent/accepted
2026-06-24T16:12:32.443Z LOG [Owner alert completed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T16:12:32.444Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T16:12:32.445Z LOG [SMS webhook async AI continuation completed] {"leadId":"3763b354-30f2-42ac-b4fb-09c893c4cdf8","phone":"+14783092224","providerMessageSid":"textbee:6a3c01ed77015dcde1955b1b"}
2026-06-24T16:28:29.133Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:28:29.147Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:28:29.149Z LOG Recover Missed Call running on port 3000
2026-06-24T16:28:29.149Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:28:29.149Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:35:34.032Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:35:34.052Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:35:34.053Z LOG Recover Missed Call running on port 3000
2026-06-24T16:35:34.054Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:35:34.054Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:43:26.049Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:43:26.158Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:43:26.159Z LOG Recover Missed Call running on port 3000
2026-06-24T16:43:26.159Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:43:26.159Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T16:52:12.963Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T16:52:13.057Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T16:52:13.059Z LOG Recover Missed Call running on port 3000
2026-06-24T16:52:13.060Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T16:52:13.060Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:03:52.348Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:03:52.439Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:03:52.441Z LOG Recover Missed Call running on port 3000
2026-06-24T17:03:52.441Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:03:52.441Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:12:09.648Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:12:09.833Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:12:09.836Z LOG Recover Missed Call running on port 3000
2026-06-24T17:12:09.836Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:12:09.836Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:14:37.845Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:14:37.858Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:14:37.860Z LOG Recover Missed Call running on port 3000
2026-06-24T17:14:37.861Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:14:37.861Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:17:11.620Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:U__YIY6YUCPP2aZeDcbM9B0W9XypAdoPsZ1Gj8xhX3inaXQZi2JExw","callLegId":"8966003a-6ff0-11f1-813d-02420aef99a0","callSessionId":"8965f680-6ff0-11f1-a311-02420aef99a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T17:17:11.646Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T17:17:12.276Z LOG [Telnyx voice command ok: answer]
2026-06-24T17:17:12.276Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T17:17:12.277Z LOG [Missed-call recovery triggered] {"key":"8965f680-6ff0-11f1-a311-02420aef99a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T17:17:12.296Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T17:17:12.597Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:U__YIY6YUCPP2aZeDcbM9B0W9XypAdoPsZ1Gj8xhX3inaXQZi2JExw","callLegId":"8966003a-6ff0-11f1-813d-02420aef99a0","callSessionId":"8965f680-6ff0-11f1-a311-02420aef99a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T17:17:12.602Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T17:17:12.602Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T17:17:12.603Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8965f680-6ff0-11f1-a311-02420aef99a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T17:17:12.749Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T17:17:13.599Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:U__YIY6YUCPP2aZeDcbM9B0W9XypAdoPsZ1Gj8xhX3inaXQZi2JExw","callLegId":"8966003a-6ff0-11f1-813d-02420aef99a0","callSessionId":"8965f680-6ff0-11f1-a311-02420aef99a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T17:17:13.607Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T17:17:13.607Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T17:17:13.607Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8965f680-6ff0-11f1-a311-02420aef99a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T17:17:13.607Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T17:17:19.307Z LOG [Missed-call recovery SMS attempt] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T17:17:19.308Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T17:17:19.675Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c111f77015dcde1996841","recipientCount":1}}}
2026-06-24T17:17:19.683Z LOG [Missed-call recovery SMS sent] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c111f77015dcde1996841\",\"recipientCount\":1}}"}
2026-06-24T17:17:19.699Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T17:17:23.210Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:U__YIY6YUCPP2aZeDcbM9B0W9XypAdoPsZ1Gj8xhX3inaXQZi2JExw","callLegId":"8966003a-6ff0-11f1-813d-02420aef99a0","callSessionId":"8965f680-6ff0-11f1-a311-02420aef99a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T17:17:23.216Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T17:17:23.216Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T17:17:23.216Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8965f680-6ff0-11f1-a311-02420aef99a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T17:17:23.217Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T17:17:23.465Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T17:17:23.740Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:U__YIY6YUCPP2aZeDcbM9B0W9XypAdoPsZ1Gj8xhX3inaXQZi2JExw","callLegId":"8966003a-6ff0-11f1-813d-02420aef99a0","callSessionId":"8965f680-6ff0-11f1-a311-02420aef99a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T17:17:23.747Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T17:17:23.748Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T17:17:23.748Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8965f680-6ff0-11f1-a311-02420aef99a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T17:18:18.295Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T17:18:18.297Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"456 Main St, Ann Arbor, MI we have ants in the kitchen and need help asap I'm Ch","providerMessageSid":"textbee:6a3c115a77015dcde1997a5b"}
2026-06-24T17:18:18.311Z LOG [Inbound SMS linked to lead] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T17:18:18.328Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","messageId":"0efb24be-0f4f-4542-b1a2-7fa9a0ee2985","messageProviderSid":"textbee:6a3c115a77015dcde1997a5b","mode":"webhook_fast_save"}
2026-06-24T17:18:18.345Z LOG [SMS cost guard disabled for testing] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T17:18:18.398Z LOG [Conversation field rebuild captured fields] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","context":"before_dispatcher_router","gained":["customer_name","service_address","pest_type","urgency"],"customerName":"Chuck Simms","serviceAddress":"456 Main St, Ann Arbor, MI","serviceType":"Ants","propertyType":null,"urgency":"Emergency / Safety Risk"}
2026-06-24T17:18:18.933Z LOG [Service area check] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-24T17:18:18.942Z LOG [Customer SMS reply attempt] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":234}
2026-06-24T17:18:18.943Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":234}
2026-06-24T17:18:19.158Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c115b77015dcde1997a9d","recipientCount":1}}}
2026-06-24T17:18:19.158Z LOG [Customer SMS reply sent] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c115b77015dcde1997a9d\",\"recipientCount\":1}}"}
2026-06-24T17:18:19.165Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: If anyone is having a severe allergic reaction, trouble breathing, or is in immediate danger, call 911 now. I’ll mark this as urgent for the office. is this for"}
2026-06-24T17:18:19.167Z LOG [SMS webhook async AI continuation completed] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","providerMessageSid":"textbee:6a3c115a77015dcde1997a5b"}
2026-06-24T17:18:50.750Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T17:18:50.751Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3c117a77015dcde1998472"}
2026-06-24T17:18:50.758Z LOG [Inbound SMS linked to lead] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T17:18:50.853Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","messageId":"313ac899-e4f9-4278-ae8a-76baa2181b9a","messageProviderSid":"textbee:6a3c117a77015dcde1998472","mode":"webhook_fast_save"}
2026-06-24T17:18:50.861Z LOG [SMS cost guard disabled for testing] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T17:18:50.884Z LOG [Conversation field rebuild captured fields] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-24T17:18:53.733Z LOG [Service area check] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","status":"in_area","distanceMiles":17,"reason":"estimated 17 miles from business address, within 25 miles"}
2026-06-24T17:18:53.743Z LOG [Customer SMS reply attempt] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-24T17:18:53.743Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T17:18:53.940Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c117e77015dcde19985ea","recipientCount":1}}}
2026-06-24T17:18:53.940Z LOG [Customer SMS reply sent] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c117e77015dcde19985ea\",\"recipientCount\":1}}"}
2026-06-24T17:18:53.949Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T17:18:53.954Z LOG [Owner alert check] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-24T17:18:56.088Z LOG [Owner alert sending] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T17:18:56.090Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 456 Main St, Ann Arbor","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T17:18:56.091Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":471}
2026-06-24T17:18:56.273Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c118077015dcde1998726","recipientCount":1}}}
2026-06-24T17:18:56.274Z LOG [Owner SMS TextBee result] accepted
2026-06-24T17:18:56.274Z LOG [Owner alert sms result] sent/accepted
2026-06-24T17:18:56.744Z LOG [Owner alert email result] sent/accepted
2026-06-24T17:18:56.751Z LOG [Owner alert completed] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T17:18:56.751Z LOG [SMS webhook async AI continuation completed] {"leadId":"34a36609-df65-44af-99f4-49fc1f9e97a7","phone":"+14783092224","providerMessageSid":"textbee:6a3c117a77015dcde1998472"}
2026-06-24T17:37:58.442Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:37:58.540Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:37:58.542Z LOG Recover Missed Call running on port 3000
2026-06-24T17:37:58.542Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:37:58.542Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:40:12.961Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:40:13.045Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:40:13.047Z LOG Recover Missed Call running on port 3000
2026-06-24T17:40:13.048Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:40:13.048Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T17:48:49.446Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T17:48:49.537Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T17:48:49.539Z LOG Recover Missed Call running on port 3000
2026-06-24T17:48:49.539Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T17:48:49.539Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T18:03:45.548Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T18:03:45.634Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T18:03:45.636Z LOG Recover Missed Call running on port 3000
2026-06-24T18:03:45.637Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T18:03:45.637Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T18:04:48.327Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:bM1pWHl-y4cR9cEvccOaNSn1D5qJjG-NeS8hBLOw9UiErDU4e8M4PA","callLegId":"301f70b8-6ff7-11f1-b0e3-02420aef95a0","callSessionId":"301f67ee-6ff7-11f1-bff3-02420aef95a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T18:04:48.368Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T18:04:48.985Z LOG [Telnyx voice command ok: answer]
2026-06-24T18:04:48.986Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:04:48.986Z LOG [Missed-call recovery triggered] {"key":"301f67ee-6ff7-11f1-bff3-02420aef95a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:04:49.007Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T18:04:49.256Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:bM1pWHl-y4cR9cEvccOaNSn1D5qJjG-NeS8hBLOw9UiErDU4e8M4PA","callLegId":"301f70b8-6ff7-11f1-b0e3-02420aef95a0","callSessionId":"301f67ee-6ff7-11f1-bff3-02420aef95a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T18:04:49.265Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:04:49.265Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:04:49.266Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"301f67ee-6ff7-11f1-bff3-02420aef95a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:04:49.401Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T18:04:50.296Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:bM1pWHl-y4cR9cEvccOaNSn1D5qJjG-NeS8hBLOw9UiErDU4e8M4PA","callLegId":"301f70b8-6ff7-11f1-b0e3-02420aef95a0","callSessionId":"301f67ee-6ff7-11f1-bff3-02420aef95a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T18:04:50.305Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:04:50.305Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:04:50.306Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"301f67ee-6ff7-11f1-bff3-02420aef95a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:04:50.306Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:04:56.018Z LOG [Missed-call recovery SMS attempt] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T18:04:56.018Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T18:04:56.262Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c1c4877015dcde19ce469","recipientCount":1}}}
2026-06-24T18:04:56.268Z LOG [Missed-call recovery SMS sent] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c1c4877015dcde19ce469\",\"recipientCount\":1}}"}
2026-06-24T18:04:56.287Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T18:04:59.960Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:bM1pWHl-y4cR9cEvccOaNSn1D5qJjG-NeS8hBLOw9UiErDU4e8M4PA","callLegId":"301f70b8-6ff7-11f1-b0e3-02420aef95a0","callSessionId":"301f67ee-6ff7-11f1-bff3-02420aef95a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T18:04:59.970Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:04:59.970Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:04:59.970Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"301f67ee-6ff7-11f1-bff3-02420aef95a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:04:59.971Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:05:00.384Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T18:05:00.667Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:bM1pWHl-y4cR9cEvccOaNSn1D5qJjG-NeS8hBLOw9UiErDU4e8M4PA","callLegId":"301f70b8-6ff7-11f1-b0e3-02420aef95a0","callSessionId":"301f67ee-6ff7-11f1-bff3-02420aef95a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T18:05:00.675Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:05:00.675Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:05:00.675Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"301f67ee-6ff7-11f1-bff3-02420aef95a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:05:44.202Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:05:44.204Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Gophers digging up the backyard, Chuck, 123 Main St, Romulus, MI 48186","providerMessageSid":"textbee:6a3c1c7877015dcde19cf3e9"}
2026-06-24T18:05:44.214Z LOG [Inbound SMS linked to lead] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T18:05:44.319Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","messageId":"74eb8bf4-9144-40f9-ad9c-b571b8bf160c","messageProviderSid":"textbee:6a3c1c7877015dcde19cf3e9","mode":"webhook_fast_save"}
2026-06-24T18:05:44.331Z LOG [SMS cost guard disabled for testing] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:05:44.359Z LOG [Conversation field rebuild captured fields] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","context":"before_dispatcher_router","gained":["customer_name","service_address"],"customerName":"Chuck","serviceAddress":"123 Main St, Romulus, MI 48186","serviceType":null,"propertyType":null,"urgency":null}
2026-06-24T18:05:47.175Z LOG [Customer SMS reply attempt] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":103}
2026-06-24T18:05:47.176Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":103}
2026-06-24T18:05:47.503Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c1c7b77015dcde19cf4c2","recipientCount":1}}}
2026-06-24T18:05:47.503Z LOG [Customer SMS reply sent] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c1c7b77015dcde19cf4c2\",\"recipientCount\":1}}"}
2026-06-24T18:05:47.511Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We can help with pest control requests. What pest issue are you dealing with today?"}
2026-06-24T18:05:47.516Z LOG [Owner alert check] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"urgencyPresent":true,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-24T18:05:47.516Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-24T18:05:47.517Z LOG [SMS webhook async AI continuation completed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","providerMessageSid":"textbee:6a3c1c7877015dcde19cf3e9"}
2026-06-24T18:06:10.143Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:06:10.143Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Gophers digging up the backyard","providerMessageSid":"textbee:6a3c1c9277015dcde19cfcde"}
2026-06-24T18:06:10.151Z LOG [Inbound SMS linked to lead] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T18:06:10.182Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","messageId":"2e3fe21a-875c-4768-9310-1e40b7cf1816","messageProviderSid":"textbee:6a3c1c9277015dcde19cfcde","mode":"webhook_fast_save"}
2026-06-24T18:06:10.189Z LOG [SMS cost guard disabled for testing] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:06:11.725Z LOG [AI classifier allowed current-industry intake to continue] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","reason":"ai_classifier_current_industry_match","classification":"in_scope","confidence":"high","serviceType":"Mice/Rats","bodyPreview":"Gophers digging up the backyard"}
2026-06-24T18:06:11.735Z LOG [Customer SMS reply attempt] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","messageLength":94}
2026-06-24T18:06:11.735Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-24T18:06:12.087Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c1c9477015dcde19cfdea","recipientCount":1}}}
2026-06-24T18:06:12.087Z LOG [Customer SMS reply sent] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"ai_classifier_intake_reengage_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c1c9477015dcde19cfdea\",\"recipientCount\":1}}"}
2026-06-24T18:06:12.097Z LOG [AI classifier in-scope continuation reply sent or attempted] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","replyPreview":"Metro Pest Control: Thanks — is this for a home/residential property or a commercial business?","hasRequiredLeadDetails":false}
2026-06-24T18:06:12.098Z LOG [SMS webhook async AI continuation completed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","providerMessageSid":"textbee:6a3c1c9277015dcde19cfcde"}
2026-06-24T18:06:26.856Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:06:26.857Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3c1ca377015dcde19d0259"}
2026-06-24T18:06:26.867Z LOG [Inbound SMS linked to lead] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T18:06:26.883Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","messageId":"6c3e822c-5542-4c1e-ae08-44bb9a0ba0f4","messageProviderSid":"textbee:6a3c1ca377015dcde19d0259","mode":"webhook_fast_save"}
2026-06-24T18:06:26.890Z LOG [SMS cost guard disabled for testing] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:06:26.899Z LOG [Conversation field rebuild captured fields] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-24T18:06:28.133Z LOG [Service area check] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-24T18:06:28.143Z LOG [Customer SMS reply attempt] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-24T18:06:28.144Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T18:06:28.900Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c1ca577015dcde19d0340","recipientCount":1}}}
2026-06-24T18:06:28.900Z LOG [Customer SMS reply sent] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c1ca577015dcde19d0340\",\"recipientCount\":1}}"}
2026-06-24T18:06:28.908Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T18:06:28.914Z LOG [Owner alert check] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-24T18:06:30.130Z LOG [Owner alert sending] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T18:06:30.132Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +14783092224\nIssue: Mice/Rats\nAddress: 123 Main St, Romulus, M","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T18:06:30.133Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":479}
2026-06-24T18:06:30.619Z LOG [Owner alert email result] sent/accepted
2026-06-24T18:06:31.444Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c1ca777015dcde19d04e8","recipientCount":1}}}
2026-06-24T18:06:31.444Z LOG [Owner SMS TextBee result] accepted
2026-06-24T18:06:31.444Z LOG [Owner alert sms result] sent/accepted
2026-06-24T18:06:31.449Z LOG [Owner alert completed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T18:06:31.449Z LOG [SMS webhook async AI continuation completed] {"leadId":"41ae98ff-5d1b-4199-ba5d-b92053a13221","phone":"+14783092224","providerMessageSid":"textbee:6a3c1ca377015dcde19d0259"}
2026-06-24T18:16:07.339Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T18:16:07.439Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T18:16:07.441Z LOG Recover Missed Call running on port 3000
2026-06-24T18:16:07.441Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T18:16:07.441Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T18:31:25.243Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T18:31:25.259Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T18:31:25.261Z LOG Recover Missed Call running on port 3000
2026-06-24T18:31:25.327Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T18:31:25.327Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T18:33:28.517Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:FSE1_YLb6FATDNkjw73yBuWwDPSmxkrI7sX2TqWHc76ifvOBVWwULA","callLegId":"316db232-6ffb-11f1-8398-02420aef341f","callSessionId":"316dad00-6ffb-11f1-ace9-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T18:33:28.545Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T18:33:29.055Z LOG [Telnyx voice command ok: answer]
2026-06-24T18:33:29.055Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:33:29.057Z LOG [Missed-call recovery triggered] {"key":"316dad00-6ffb-11f1-ace9-02420aef341f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:33:29.076Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T18:33:29.170Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:FSE1_YLb6FATDNkjw73yBuWwDPSmxkrI7sX2TqWHc76ifvOBVWwULA","callLegId":"316db232-6ffb-11f1-8398-02420aef341f","callSessionId":"316dad00-6ffb-11f1-ace9-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T18:33:29.176Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:33:29.177Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:33:29.177Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"316dad00-6ffb-11f1-ace9-02420aef341f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:33:29.321Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T18:33:30.048Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:FSE1_YLb6FATDNkjw73yBuWwDPSmxkrI7sX2TqWHc76ifvOBVWwULA","callLegId":"316db232-6ffb-11f1-8398-02420aef341f","callSessionId":"316dad00-6ffb-11f1-ace9-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T18:33:30.056Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:33:30.056Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:33:30.057Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"316dad00-6ffb-11f1-ace9-02420aef341f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:33:30.057Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:33:36.085Z LOG [Missed-call recovery SMS attempt] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T18:33:36.087Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T18:33:36.357Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c230077015dcde19f0472","recipientCount":1}}}
2026-06-24T18:33:36.363Z LOG [Missed-call recovery SMS sent] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c230077015dcde19f0472\",\"recipientCount\":1}}"}
2026-06-24T18:33:36.377Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T18:33:39.669Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:FSE1_YLb6FATDNkjw73yBuWwDPSmxkrI7sX2TqWHc76ifvOBVWwULA","callLegId":"316db232-6ffb-11f1-8398-02420aef341f","callSessionId":"316dad00-6ffb-11f1-ace9-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T18:33:39.675Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:33:39.675Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:33:39.676Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"316dad00-6ffb-11f1-ace9-02420aef341f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:33:39.676Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:33:39.860Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T18:33:40.088Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:FSE1_YLb6FATDNkjw73yBuWwDPSmxkrI7sX2TqWHc76ifvOBVWwULA","callLegId":"316db232-6ffb-11f1-8398-02420aef341f","callSessionId":"316dad00-6ffb-11f1-ace9-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T18:33:40.095Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-24T18:33:40.095Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:33:40.095Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"316dad00-6ffb-11f1-ace9-02420aef341f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:34:29.516Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:34:29.519Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"bed bugs that we need to get rid of, 33536 Unicorn Ct, Westland, MI 48186 Chuck ","providerMessageSid":"textbee:6a3c233577015dcde19f143e"}
2026-06-24T18:34:29.530Z LOG [Inbound SMS linked to lead] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T18:34:29.589Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","messageId":"7b2068d3-99d5-4a6e-8686-97ebc770f11c","messageProviderSid":"textbee:6a3c233577015dcde19f143e","mode":"webhook_fast_save"}
2026-06-24T18:34:29.674Z LOG [SMS cost guard disabled for testing] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:34:29.718Z LOG [Conversation field rebuild captured fields] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","context":"before_dispatcher_router","gained":["customer_name","service_address","pest_type"],"customerName":"Get Rid Of","serviceAddress":"33536 Unicorn Ct, Westland, MI 48186","serviceType":"Bed Bugs","propertyType":null,"urgency":null}
2026-06-24T18:34:29.817Z LOG [Customer SMS reply attempt] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","messageLength":73}
2026-06-24T18:34:29.818Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":73}
2026-06-24T18:34:30.543Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c233677015dcde19f14ca","recipientCount":1}}}
2026-06-24T18:34:30.543Z LOG [Customer SMS reply sent] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"deterministic_property_type_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c233677015dcde19f14ca\",\"recipientCount\":1}}"}
2026-06-24T18:34:30.553Z LOG [SMS webhook async AI continuation completed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","providerMessageSid":"textbee:6a3c233577015dcde19f143e"}
2026-06-24T18:34:45.654Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:34:45.655Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3c234577015dcde19f1aad"}
2026-06-24T18:34:45.661Z LOG [Inbound SMS linked to lead] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T18:34:45.700Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","messageId":"ae48ad4f-96c8-4fb6-b31a-5b81efa314c3","messageProviderSid":"textbee:6a3c234577015dcde19f1aad","mode":"webhook_fast_save"}
2026-06-24T18:34:45.708Z LOG [SMS cost guard disabled for testing] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:34:45.733Z LOG [Conversation field rebuild captured fields] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-24T18:34:47.387Z LOG [Service area check] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T18:34:47.391Z LOG [Customer SMS reply attempt] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":150}
2026-06-24T18:34:47.391Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-24T18:34:48.220Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c234877015dcde19f1bf0","recipientCount":1}}}
2026-06-24T18:34:48.220Z LOG [Customer SMS reply sent] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c234877015dcde19f1bf0\",\"recipientCount\":1}}"}
2026-06-24T18:34:48.229Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-24T18:34:48.236Z LOG [Owner alert check] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-24T18:34:48.237Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","status":"intake","qualified":0,"serviceType":"Bed Bugs","reason":"not enough qualified details yet"}
2026-06-24T18:34:48.237Z LOG [SMS webhook async AI continuation completed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","providerMessageSid":"textbee:6a3c234577015dcde19f1aad"}
2026-06-24T18:35:07.047Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:35:07.047Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a3c235b77015dcde19f2292"}
2026-06-24T18:35:07.054Z LOG [Inbound SMS linked to lead] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T18:35:07.079Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","messageId":"0c5043ec-23d2-4750-9d59-704cb20d47ab","messageProviderSid":"textbee:6a3c235b77015dcde19f2292","mode":"webhook_fast_save"}
2026-06-24T18:35:07.097Z LOG [SMS cost guard disabled for testing] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-24T18:35:07.108Z LOG [Conversation field rebuild captured fields] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","context":"before_dispatcher_router","gained":["urgency","preferred_time"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":null,"urgency":"This Week"}
2026-06-24T18:35:10.787Z LOG [Service area check] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-24T18:35:10.795Z LOG [Customer SMS reply attempt] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-24T18:35:10.795Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T18:35:11.449Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c235f77015dcde19f241c","recipientCount":1}}}
2026-06-24T18:35:11.449Z LOG [Customer SMS reply sent] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c235f77015dcde19f241c\",\"recipientCount\":1}}"}
2026-06-24T18:35:11.457Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T18:35:11.461Z LOG [Owner alert check] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-24T18:35:15.069Z LOG [Owner alert sending] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T18:35:15.071Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Get Rid Of\nPhone: +14783092224\nIssue: Bed Bugs\nAddress: 33536 Unicorn Ct, W","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T18:35:15.071Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":452}
2026-06-24T18:35:15.266Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c236377015dcde19f250f","recipientCount":1}}}
2026-06-24T18:35:15.266Z LOG [Owner SMS TextBee result] accepted
2026-06-24T18:35:15.266Z LOG [Owner alert sms result] sent/accepted
2026-06-24T18:35:15.568Z LOG [Owner alert email result] sent/accepted
2026-06-24T18:35:15.574Z LOG [Owner alert completed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T18:35:15.574Z LOG [SMS webhook async AI continuation completed] {"leadId":"cdcdbfcf-ae2d-421c-9454-20baead10732","phone":"+14783092224","providerMessageSid":"textbee:6a3c235b77015dcde19f2292"}
2026-06-24T18:36:10.955Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:eqxwDt3GHX-3h4DrLvxsuCskbL3m-r1uSNBMPYW5dsLj2kUMRDc6hw","callLegId":"92048fc6-6ffb-11f1-b6bf-c659631140e0","callSessionId":"9204835a-6ffb-11f1-93e8-c659631140e0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T18:36:10.976Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T18:36:11.262Z LOG [Telnyx voice command ok: answer]
2026-06-24T18:36:11.262Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:36:11.262Z LOG [Missed-call recovery triggered] {"key":"9204835a-6ffb-11f1-93e8-c659631140e0:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:36:11.273Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T18:36:11.552Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:eqxwDt3GHX-3h4DrLvxsuCskbL3m-r1uSNBMPYW5dsLj2kUMRDc6hw","callLegId":"92048fc6-6ffb-11f1-b6bf-c659631140e0","callSessionId":"9204835a-6ffb-11f1-93e8-c659631140e0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T18:36:11.559Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:36:11.559Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:36:11.559Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9204835a-6ffb-11f1-93e8-c659631140e0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:36:11.719Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T18:36:12.641Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:eqxwDt3GHX-3h4DrLvxsuCskbL3m-r1uSNBMPYW5dsLj2kUMRDc6hw","callLegId":"92048fc6-6ffb-11f1-b6bf-c659631140e0","callSessionId":"9204835a-6ffb-11f1-93e8-c659631140e0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T18:36:12.648Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:36:12.648Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:36:12.649Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9204835a-6ffb-11f1-93e8-c659631140e0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:36:12.649Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:36:18.286Z LOG [Missed-call recovery SMS attempt] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T18:36:18.287Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T18:36:18.472Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c23a277015dcde19f2cfd","recipientCount":1}}}
2026-06-24T18:36:18.478Z LOG [Missed-call recovery SMS sent] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c23a277015dcde19f2cfd\",\"recipientCount\":1}}"}
2026-06-24T18:36:18.489Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T18:36:22.213Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:eqxwDt3GHX-3h4DrLvxsuCskbL3m-r1uSNBMPYW5dsLj2kUMRDc6hw","callLegId":"92048fc6-6ffb-11f1-b6bf-c659631140e0","callSessionId":"9204835a-6ffb-11f1-93e8-c659631140e0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T18:36:22.223Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:36:22.224Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:36:22.224Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9204835a-6ffb-11f1-93e8-c659631140e0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:36:22.224Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:36:22.409Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T18:36:22.584Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:eqxwDt3GHX-3h4DrLvxsuCskbL3m-r1uSNBMPYW5dsLj2kUMRDc6hw","callLegId":"92048fc6-6ffb-11f1-b6bf-c659631140e0","callSessionId":"9204835a-6ffb-11f1-93e8-c659631140e0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T18:36:22.592Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:36:22.592Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:36:22.592Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9204835a-6ffb-11f1-93e8-c659631140e0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:36:55.030Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:36:55.030Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Need help with gophers in the backyard digging it up, Chuck Simms 123 main st, d","providerMessageSid":"textbee:6a3c23c777015dcde19f306e"}
2026-06-24T18:36:55.045Z LOG [Inbound SMS linked to lead] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T18:36:55.072Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","messageId":"2a894176-4597-4922-a92b-9135b1494144","messageProviderSid":"textbee:6a3c23c777015dcde19f306e","mode":"webhook_fast_save"}
2026-06-24T18:36:55.081Z LOG [SMS cost guard disabled for testing] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-24T18:36:55.142Z LOG [Conversation field rebuild captured fields] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","context":"before_dispatcher_router","gained":["customer_name","service_address"],"customerName":"Chuck Simms","serviceAddress":"123 main st, dearborn, mi","serviceType":null,"propertyType":null,"urgency":null}
2026-06-24T18:36:57.129Z LOG [Service area check] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","status":"out_of_area","distanceMiles":621.8,"reason":"estimated 621.8 miles from business address, outside 25 miles"}
2026-06-24T18:36:57.138Z LOG [Customer SMS reply attempt] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","context":"out_of_service_area_reply","provider":"textbee","messageLength":133}
2026-06-24T18:36:57.138Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":133}
2026-06-24T18:36:57.578Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c23c977015dcde19f30b9","recipientCount":1}}}
2026-06-24T18:36:57.579Z LOG [Customer SMS reply sent] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","context":"out_of_service_area_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c23c977015dcde19f30b9\",\"recipientCount\":1}}"}
2026-06-24T18:36:57.586Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","hasRequiredLeadDetails":false,"status":"needs_review","qualified":0,"replyPreview":"Metro Pest Control: Thanks — that address appears to be outside our normal service area, but the office will review it and follow up."}
2026-06-24T18:36:57.590Z LOG [Owner alert check] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","status":"needs_review","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-24T18:36:57.590Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","status":"needs_review","qualified":0,"serviceType":"Other Pest Issue","reason":"not enough qualified details yet"}
2026-06-24T18:36:57.591Z LOG [SMS webhook async AI continuation completed] {"leadId":"bd10ba9a-63a4-4c3f-a762-3334d1fbecb0","phone":"+13133141123","providerMessageSid":"textbee:6a3c23c777015dcde19f306e"}
2026-06-24T18:50:27.634Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:h0bbOIsJkVYnIkUEavDQjHxcczNoBA-mLCwivCaIGuz3K82nLxi-wA","callLegId":"9113481c-6ffd-11f1-950c-02420aef8ea0","callSessionId":"91133d2c-6ffd-11f1-985d-02420aef8ea0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T18:50:27.666Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T18:50:27.822Z LOG [Telnyx voice command ok: answer]
2026-06-24T18:50:27.823Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:50:27.823Z LOG [Missed-call recovery triggered] {"key":"91133d2c-6ffd-11f1-985d-02420aef8ea0:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:50:27.845Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T18:50:29.527Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T18:50:29.543Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T18:50:29.544Z LOG Recover Missed Call running on port 3000
2026-06-24T18:50:29.544Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T18:50:29.544Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T18:50:29.738Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:h0bbOIsJkVYnIkUEavDQjHxcczNoBA-mLCwivCaIGuz3K82nLxi-wA","callLegId":"9113481c-6ffd-11f1-950c-02420aef8ea0","callSessionId":"91133d2c-6ffd-11f1-985d-02420aef8ea0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T18:50:29.739Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-24T18:50:36.141Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:h0bbOIsJkVYnIkUEavDQjHxcczNoBA-mLCwivCaIGuz3K82nLxi-wA","callLegId":"9113481c-6ffd-11f1-950c-02420aef8ea0","callSessionId":"91133d2c-6ffd-11f1-985d-02420aef8ea0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T18:50:36.141Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-24T18:50:41.370Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:R9koRqRqX0ZiKwcKabOP8iHYePAP3Jni_-ZLQNYgFIoLK5O3iqERtQ","callLegId":"9924cfd0-6ffd-11f1-be70-86f8856341dc","callSessionId":"9924c238-6ffd-11f1-adf5-86f8856341dc","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T18:50:41.458Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T18:50:41.788Z LOG [Telnyx voice command ok: answer]
2026-06-24T18:50:41.789Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:50:41.789Z LOG [Missed-call recovery triggered] {"key":"9924c238-6ffd-11f1-adf5-86f8856341dc:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T18:50:41.832Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T18:50:41.930Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:R9koRqRqX0ZiKwcKabOP8iHYePAP3Jni_-ZLQNYgFIoLK5O3iqERtQ","callLegId":"9924cfd0-6ffd-11f1-be70-86f8856341dc","callSessionId":"9924c238-6ffd-11f1-adf5-86f8856341dc","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T18:50:41.947Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:50:41.948Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:50:41.948Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9924c238-6ffd-11f1-adf5-86f8856341dc:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T18:50:42.081Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T18:50:42.346Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:R9koRqRqX0ZiKwcKabOP8iHYePAP3Jni_-ZLQNYgFIoLK5O3iqERtQ","callLegId":"9924cfd0-6ffd-11f1-be70-86f8856341dc","callSessionId":"9924c238-6ffd-11f1-adf5-86f8856341dc","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T18:50:42.362Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:50:42.362Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:50:42.362Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9924c238-6ffd-11f1-adf5-86f8856341dc:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T18:50:42.363Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:50:48.854Z LOG [Missed-call recovery SMS attempt] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T18:50:48.855Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T18:50:49.357Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c270977015dcde19fc623","recipientCount":1}}}
2026-06-24T18:50:49.372Z LOG [Missed-call recovery SMS sent] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c270977015dcde19fc623\",\"recipientCount\":1}}"}
2026-06-24T18:50:49.391Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T18:50:51.873Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:R9koRqRqX0ZiKwcKabOP8iHYePAP3Jni_-ZLQNYgFIoLK5O3iqERtQ","callLegId":"9924cfd0-6ffd-11f1-be70-86f8856341dc","callSessionId":"9924c238-6ffd-11f1-adf5-86f8856341dc","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T18:50:51.884Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:50:51.884Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:50:51.884Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9924c238-6ffd-11f1-adf5-86f8856341dc:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T18:50:51.885Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T18:50:52.000Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T18:50:52.085Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:R9koRqRqX0ZiKwcKabOP8iHYePAP3Jni_-ZLQNYgFIoLK5O3iqERtQ","callLegId":"9924cfd0-6ffd-11f1-be70-86f8856341dc","callSessionId":"9924c238-6ffd-11f1-adf5-86f8856341dc","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T18:50:52.097Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T18:50:52.097Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:50:52.097Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"9924c238-6ffd-11f1-adf5-86f8856341dc:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T18:51:51.743Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T18:51:51.745Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Gophers in the backyard causing holes everywhere, Chuck, 123 Main St, Suthgate, ","providerMessageSid":"textbee:6a3c274777015dcde19fcd11"}
2026-06-24T18:51:51.756Z LOG [Inbound SMS linked to lead] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T18:51:51.807Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","messageId":"3c98b030-ad02-4e79-be33-0682e89aad4f","messageProviderSid":"textbee:6a3c274777015dcde19fcd11","mode":"webhook_fast_save"}
2026-06-24T18:51:51.820Z LOG [SMS cost guard disabled for testing] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-24T18:51:51.849Z LOG [Conversation field rebuild captured fields] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","context":"before_dispatcher_router","gained":["customer_name","service_address"],"customerName":"Chuck","serviceAddress":"123 Main St, Suthgate, MI 48195","serviceType":null,"propertyType":null,"urgency":null}
2026-06-24T18:51:53.695Z LOG [Service area check] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","status":"in_area","distanceMiles":10.4,"reason":"Customer location \"suthgate\" normalized to \"Southgate, MI\". Business location recognized as \"Romulus, MI\". Estimated 10.4 miles from business location, within 25 miles."}
2026-06-24T18:51:53.716Z LOG [Customer SMS reply attempt] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-24T18:51:53.727Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T18:51:54.055Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c274a77015dcde19fcd41","recipientCount":1}}}
2026-06-24T18:51:54.055Z LOG [Customer SMS reply sent] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c274a77015dcde19fcd41\",\"recipientCount\":1}}"}
2026-06-24T18:51:54.071Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T18:51:54.076Z LOG [Owner alert check] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-24T18:51:55.346Z LOG [Owner alert sending] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T18:51:55.348Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +13133141123\nIssue: Other Pest Issue\nAddress: 123 Main St, Sut","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T18:51:55.348Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":500}
2026-06-24T18:51:55.528Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c274b77015dcde19fcdb1","recipientCount":1}}}
2026-06-24T18:51:55.528Z LOG [Owner SMS TextBee result] accepted
2026-06-24T18:51:55.529Z LOG [Owner alert sms result] sent/accepted
2026-06-24T18:51:55.932Z LOG [Owner alert email result] sent/accepted
2026-06-24T18:51:55.947Z LOG [Owner alert completed] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T18:51:55.947Z LOG [SMS webhook async AI continuation completed] {"leadId":"23c897a1-f77a-47cc-8c51-e29df38f7fcf","phone":"+13133141123","providerMessageSid":"textbee:6a3c274777015dcde19fcd11"}
2026-06-24T19:09:25.642Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T19:09:25.660Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T19:09:25.662Z LOG Recover Missed Call running on port 3000
2026-06-24T19:09:25.727Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T19:09:25.727Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T19:10:41.133Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T19:10:41.145Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T19:10:41.146Z LOG Recover Missed Call running on port 3000
2026-06-24T19:10:41.147Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T19:10:41.147Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T19:19:31.036Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T19:19:31.048Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T19:19:31.049Z LOG Recover Missed Call running on port 3000
2026-06-24T19:19:31.049Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T19:19:31.049Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T19:27:06.853Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T19:27:06.935Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T19:27:06.937Z LOG Recover Missed Call running on port 3000
2026-06-24T19:27:06.937Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T19:27:06.937Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T19:35:32.458Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:IWpjdXq_K9p_wjreZlTXuhL9Kl_t7s9F_oFJEeK9h_WAUEVuo274DA","callLegId":"dd1043cc-7003-11f1-9ce2-02420aef991f","callSessionId":"dd1039cc-7003-11f1-9170-02420aef991f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T19:35:32.509Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T19:35:32.968Z LOG [Telnyx voice command ok: answer]
2026-06-24T19:35:32.969Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T19:35:32.969Z LOG [Missed-call recovery triggered] {"key":"dd1039cc-7003-11f1-9170-02420aef991f:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T19:35:32.997Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T19:35:33.409Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:IWpjdXq_K9p_wjreZlTXuhL9Kl_t7s9F_oFJEeK9h_WAUEVuo274DA","callLegId":"dd1043cc-7003-11f1-9ce2-02420aef991f","callSessionId":"dd1039cc-7003-11f1-9170-02420aef991f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T19:35:33.417Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:35:33.417Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T19:35:33.418Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"dd1039cc-7003-11f1-9170-02420aef991f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T19:35:33.559Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T19:35:34.329Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:IWpjdXq_K9p_wjreZlTXuhL9Kl_t7s9F_oFJEeK9h_WAUEVuo274DA","callLegId":"dd1043cc-7003-11f1-9ce2-02420aef991f","callSessionId":"dd1039cc-7003-11f1-9170-02420aef991f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T19:35:34.336Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:35:34.337Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T19:35:34.337Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"dd1039cc-7003-11f1-9170-02420aef991f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T19:35:34.337Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T19:35:40.006Z LOG [Missed-call recovery SMS attempt] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T19:35:40.007Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T19:35:40.264Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c318c77015dcde1a2c433","recipientCount":1}}}
2026-06-24T19:35:40.270Z LOG [Missed-call recovery SMS sent] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c318c77015dcde1a2c433\",\"recipientCount\":1}}"}
2026-06-24T19:35:40.283Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T19:35:43.916Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:IWpjdXq_K9p_wjreZlTXuhL9Kl_t7s9F_oFJEeK9h_WAUEVuo274DA","callLegId":"dd1043cc-7003-11f1-9ce2-02420aef991f","callSessionId":"dd1039cc-7003-11f1-9170-02420aef991f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T19:35:43.924Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:35:43.924Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T19:35:43.924Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"dd1039cc-7003-11f1-9170-02420aef991f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T19:35:43.925Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T19:35:44.244Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T19:35:44.533Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:IWpjdXq_K9p_wjreZlTXuhL9Kl_t7s9F_oFJEeK9h_WAUEVuo274DA","callLegId":"dd1043cc-7003-11f1-9ce2-02420aef991f","callSessionId":"dd1039cc-7003-11f1-9170-02420aef991f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T19:35:44.542Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:35:44.542Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T19:35:44.542Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"dd1039cc-7003-11f1-9170-02420aef991f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T19:36:35.270Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T19:36:35.273Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Deaborn, MI - Chuck Simms - termintes need help","providerMessageSid":"textbee:6a3c31c377015dcde1a2d316"}
2026-06-24T19:36:35.281Z LOG [Inbound SMS linked to lead] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T19:36:35.332Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","messageId":"4bddccd3-5e6c-432d-b45a-78f3635e9ed3","messageProviderSid":"textbee:6a3c31c377015dcde1a2d316","mode":"webhook_fast_save"}
2026-06-24T19:36:35.345Z LOG [SMS cost guard disabled for testing] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-24T19:36:35.372Z LOG [Conversation field rebuild captured fields] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","context":"before_dispatcher_router","gained":["customer_name","service_address"],"customerName":"Termintes","serviceAddress":"33536 Unicorn Ct, Deaborn, MI","serviceType":null,"propertyType":null,"urgency":null}
2026-06-24T19:36:38.293Z LOG [Service area check] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","status":"out_of_area","distanceMiles":null,"reason":"customer state CT differs from business state MI"}
2026-06-24T19:36:38.309Z LOG [Customer SMS reply attempt] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","context":"out_of_service_area_reply","provider":"textbee","messageLength":133}
2026-06-24T19:36:38.310Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":133}
2026-06-24T19:36:38.575Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c31c677015dcde1a2d4af","recipientCount":1}}}
2026-06-24T19:36:38.576Z LOG [Customer SMS reply sent] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","context":"out_of_service_area_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c31c677015dcde1a2d4af\",\"recipientCount\":1}}"}
2026-06-24T19:36:38.584Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","hasRequiredLeadDetails":false,"status":"needs_review","qualified":0,"replyPreview":"Metro Pest Control: Thanks — that address appears to be outside our normal service area, but the office will review it and follow up."}
2026-06-24T19:36:38.587Z LOG [Owner alert check] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","status":"needs_review","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-24T19:36:38.589Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","status":"needs_review","qualified":0,"serviceType":"Termites","reason":"not enough qualified details yet"}
2026-06-24T19:36:38.589Z LOG [SMS webhook async AI continuation completed] {"leadId":"0f809422-3157-4093-9c6d-69fb85c78715","phone":"+13133141123","providerMessageSid":"textbee:6a3c31c377015dcde1a2d316"}
2026-06-24T19:46:52.441Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T19:46:52.538Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T19:46:52.539Z LOG Recover Missed Call running on port 3000
2026-06-24T19:46:52.539Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T19:46:52.539Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T19:47:03.316Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:U84jflrfhXOR5TwtzI6QUIlRB28U5gYFcdOex0H53xGMKN6CWEBMUA","callLegId":"78f44c7e-7005-11f1-b0cb-e6b6ab987a31","callSessionId":"78f444fe-7005-11f1-989c-e6b6ab987a31","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-24T19:47:03.372Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-24T19:47:03.657Z LOG [Telnyx voice command ok: answer]
2026-06-24T19:47:03.658Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T19:47:03.659Z LOG [Missed-call recovery triggered] {"key":"78f444fe-7005-11f1-989c-e6b6ab987a31:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-24T19:47:03.674Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-24T19:47:04.040Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:U84jflrfhXOR5TwtzI6QUIlRB28U5gYFcdOex0H53xGMKN6CWEBMUA","callLegId":"78f44c7e-7005-11f1-b0cb-e6b6ab987a31","callSessionId":"78f444fe-7005-11f1-989c-e6b6ab987a31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-24T19:47:04.047Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:47:04.047Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T19:47:04.047Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"78f444fe-7005-11f1-989c-e6b6ab987a31:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-24T19:47:04.213Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-24T19:47:04.635Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:U84jflrfhXOR5TwtzI6QUIlRB28U5gYFcdOex0H53xGMKN6CWEBMUA","callLegId":"78f44c7e-7005-11f1-b0cb-e6b6ab987a31","callSessionId":"78f444fe-7005-11f1-989c-e6b6ab987a31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-24T19:47:04.642Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:47:04.642Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T19:47:04.643Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"78f444fe-7005-11f1-989c-e6b6ab987a31:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-24T19:47:04.643Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T19:47:10.681Z LOG [Missed-call recovery SMS attempt] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-24T19:47:10.682Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-24T19:47:11.373Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c343f77015dcde1a380db","recipientCount":1}}}
2026-06-24T19:47:11.378Z LOG [Missed-call recovery SMS sent] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c343f77015dcde1a380db\",\"recipientCount\":1}}"}
2026-06-24T19:47:11.399Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-24T19:47:14.327Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:U84jflrfhXOR5TwtzI6QUIlRB28U5gYFcdOex0H53xGMKN6CWEBMUA","callLegId":"78f44c7e-7005-11f1-b0cb-e6b6ab987a31","callSessionId":"78f444fe-7005-11f1-989c-e6b6ab987a31","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-24T19:47:14.334Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:47:14.335Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T19:47:14.335Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"78f444fe-7005-11f1-989c-e6b6ab987a31:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-24T19:47:14.335Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-24T19:47:14.489Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-24T19:47:14.719Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:U84jflrfhXOR5TwtzI6QUIlRB28U5gYFcdOex0H53xGMKN6CWEBMUA","callLegId":"78f44c7e-7005-11f1-b0cb-e6b6ab987a31","callSessionId":"78f444fe-7005-11f1-989c-e6b6ab987a31","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-24T19:47:14.726Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-24T19:47:14.726Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T19:47:14.727Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"78f444fe-7005-11f1-989c-e6b6ab987a31:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-24T19:48:14.342Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T19:48:14.344Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms here looking for help with termites at 123 Main St, Grden City, MI","providerMessageSid":"textbee:6a3c347e77015dcde1a39379"}
2026-06-24T19:48:14.354Z LOG [Inbound SMS linked to lead] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-24T19:48:14.387Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","messageId":"80943467-7cd7-4d8c-899b-9c58f2a1369d","messageProviderSid":"textbee:6a3c347e77015dcde1a39379","mode":"webhook_fast_save"}
2026-06-24T19:48:14.431Z LOG [SMS cost guard disabled for testing] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-24T19:48:14.468Z LOG [Conversation field rebuild captured fields] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","context":"before_dispatcher_router","gained":["customer_name","service_address","pest_type"],"customerName":"Chuck Simms","serviceAddress":"123 Main St, Grden City, MI","serviceType":"Termites","propertyType":null,"urgency":null}
2026-06-24T19:48:14.543Z LOG [Customer SMS reply attempt] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","context":"deterministic_property_type_retry","provider":"textbee","messageLength":73}
2026-06-24T19:48:14.544Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":73}
2026-06-24T19:48:17.275Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c348177015dcde1a39541","recipientCount":1}}}
2026-06-24T19:48:17.275Z LOG [Customer SMS reply sent] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","context":"deterministic_property_type_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c348177015dcde1a39541\",\"recipientCount\":1}}"}
2026-06-24T19:48:17.283Z LOG [SMS webhook async AI continuation completed] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","providerMessageSid":"textbee:6a3c347e77015dcde1a39379"}
2026-06-24T19:48:32.910Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-24T19:48:32.910Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3c349077015dcde1a39e5b"}
2026-06-24T19:48:32.917Z LOG [Inbound SMS linked to lead] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-24T19:48:32.984Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","messageId":"1a7b8f7e-d9ef-41f2-bb36-728916f2858a","messageProviderSid":"textbee:6a3c349077015dcde1a39e5b","mode":"webhook_fast_save"}
2026-06-24T19:48:33.000Z LOG [SMS cost guard disabled for testing] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-24T19:48:33.009Z LOG [Conversation field rebuild captured fields] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-24T19:48:35.519Z LOG [Service area check] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","status":"in_area","distanceMiles":7.9,"reason":"Customer location \"grden city\" normalized to \"Garden City, MI\". Business location recognized as \"Romulus, MI\". Estimated 7.9 miles from business location, within 25 miles."}
2026-06-24T19:48:35.530Z LOG [Customer SMS reply attempt] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-24T19:48:35.530Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-24T19:48:36.288Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c349477015dcde1a3a05f","recipientCount":1}}}
2026-06-24T19:48:36.288Z LOG [Customer SMS reply sent] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3c349477015dcde1a3a05f\",\"recipientCount\":1}}"}
2026-06-24T19:48:36.296Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-24T19:48:36.301Z LOG [Owner alert check] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-24T19:48:37.043Z LOG [Owner alert sending] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-24T19:48:37.045Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +13133141123\nIssue: Termites\nAddress: 123 Main St, Grden","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-24T19:48:37.045Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":417}
2026-06-24T19:48:37.499Z LOG [Owner alert email result] sent/accepted
2026-06-24T19:48:38.952Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3c349777015dcde1a3a1b8","recipientCount":1}}}
2026-06-24T19:48:38.952Z LOG [Owner SMS TextBee result] accepted
2026-06-24T19:48:38.952Z LOG [Owner alert sms result] sent/accepted
2026-06-24T19:48:38.960Z LOG [Owner alert completed] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-24T19:48:38.960Z LOG [SMS webhook async AI continuation completed] {"leadId":"b0bd42eb-465b-4003-b899-ccf2b56cd84a","phone":"+13133141123","providerMessageSid":"textbee:6a3c349077015dcde1a39e5b"}
2026-06-24T22:46:22.844Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T22:46:22.866Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T22:46:22.934Z LOG Recover Missed Call running on port 3000
2026-06-24T22:46:22.934Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T22:46:22.935Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-24T23:09:59.528Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-24T23:09:59.546Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-24T23:09:59.547Z LOG Recover Missed Call running on port 3000
2026-06-24T23:09:59.548Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-24T23:09:59.549Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-25T04:16:17.331Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-25T04:16:17.447Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-25T04:16:17.448Z LOG Recover Missed Call running on port 3000
2026-06-25T04:16:17.448Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-25T04:16:17.448Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:22:34.913Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:22:35.011Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:22:35.013Z LOG Recover Missed Call running on port 3000
2026-06-26T00:22:35.013Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:22:35.014Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:22:35.119Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:2023:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:35.235Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1945:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:35.940Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:257:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:35.996Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:2023:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:36.003Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:2023:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:36.104Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1945:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:36.259Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1945:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:22:39.979Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:377:15
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:23:45.718Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:45.730Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:45.731Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:45.731Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:45.731Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:47.320Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:47.411Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:47.413Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:47.413Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:47.413Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:49.106Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:49.124Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:49.126Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:49.127Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:49.127Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:50.705Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:50.716Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:50.717Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:50.717Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:50.717Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:52.421Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:52.509Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:52.511Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:52.512Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:52.512Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:54.006Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:54.017Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:54.018Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:54.018Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:54.018Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:55.732Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:55.815Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:55.816Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:55.816Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:55.816Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:57.241Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:57.319Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:57.321Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:57.321Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:57.322Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:23:59.111Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:23:59.130Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:23:59.131Z LOG Recover Missed Call running on port 3000
2026-06-26T00:23:59.131Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:23:59.131Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:27:05.407Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T00:27:05.419Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T00:27:05.421Z LOG Recover Missed Call running on port 3000
2026-06-26T00:27:05.421Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T00:27:05.421Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T00:27:05.641Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:28:29.557Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:28:33.024Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:30:03.614Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:31:31.271Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:31:53.338Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:38:54.558Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:42:14.449Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:43:06.765Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:460:21
    at withData (file:///home/recoverm/demo.recovermissedcall.com/src/db.js:353:20)
    at updateRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:451:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:394:24
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at jsonParser (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/body-parser/lib/types/json.js:104:7)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
2026-06-26T00:43:31.783Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1867:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:20.685Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:257:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:20.697Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:2023:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:20.737Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:2023:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:20.799Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1945:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:20.980Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:1945:20
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T00:44:24.028Z ERROR settings is not defined
ReferenceError: settings is not defined
    at normalizeBusinessType (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:301:32)
    at normalizeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:352:19)
    at getRuntimeSettings (file:///home/recoverm/demo.recovermissedcall.com/src/runtimeSettings.js:447:10)
    at file:///home/recoverm/demo.recovermissedcall.com/src/routesAdmin.js:377:15
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:149:13)
    at Route.dispatch (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/route.js:119:3)
    at Layer.handle [as handle_request] (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/layer.js:95:5)
    at /home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:284:15
    at Function.process_params (/home/recoverm/nodevenv/demo.recovermissedcall.com/20/lib/node_modules/express/lib/router/index.js:346:12)
2026-06-26T01:05:32.111Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T01:05:32.122Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T01:05:32.123Z LOG Recover Missed Call running on port 3000
2026-06-26T01:05:32.123Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T01:05:32.124Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T01:05:33.828Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T01:05:33.913Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T01:05:33.915Z LOG Recover Missed Call running on port 3000
2026-06-26T01:05:33.916Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T01:05:33.917Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T01:06:28.838Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:etmcccjcN0IE92LT5hHsgItKRPzmwz0GIzCKtvJS3zJ8WYkgHGuhmw","callLegId":"43131580-70fb-11f1-95e3-02420aef221f","callSessionId":"43130b4e-70fb-11f1-8376-02420aef221f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-26T01:06:29.087Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-26T01:06:29.723Z LOG [Telnyx voice command ok: answer]
2026-06-26T01:06:29.724Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T01:06:29.724Z LOG [Missed-call recovery triggered] {"key":"43130b4e-70fb-11f1-8376-02420aef221f:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T01:06:29.804Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-26T01:06:30.116Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:etmcccjcN0IE92LT5hHsgItKRPzmwz0GIzCKtvJS3zJ8WYkgHGuhmw","callLegId":"43131580-70fb-11f1-95e3-02420aef221f","callSessionId":"43130b4e-70fb-11f1-8376-02420aef221f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-26T01:06:30.133Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T01:06:30.134Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T01:06:30.134Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"43130b4e-70fb-11f1-8376-02420aef221f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T01:06:30.256Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-26T01:06:31.344Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:etmcccjcN0IE92LT5hHsgItKRPzmwz0GIzCKtvJS3zJ8WYkgHGuhmw","callLegId":"43131580-70fb-11f1-95e3-02420aef221f","callSessionId":"43130b4e-70fb-11f1-8376-02420aef221f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-26T01:06:31.361Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T01:06:31.362Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T01:06:31.362Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"43130b4e-70fb-11f1-8376-02420aef221f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T01:06:31.363Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T01:06:36.817Z LOG [Missed-call recovery SMS attempt] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-26T01:06:36.819Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-26T01:06:37.018Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dd09d77015dcde135dc24","recipientCount":1}}}
2026-06-26T01:06:37.024Z LOG [Missed-call recovery SMS sent] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3dd09d77015dcde135dc24\",\"recipientCount\":1}}"}
2026-06-26T01:06:37.048Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-26T01:06:40.915Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:etmcccjcN0IE92LT5hHsgItKRPzmwz0GIzCKtvJS3zJ8WYkgHGuhmw","callLegId":"43131580-70fb-11f1-95e3-02420aef221f","callSessionId":"43130b4e-70fb-11f1-8376-02420aef221f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-26T01:06:40.926Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T01:06:40.927Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T01:06:40.927Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"43130b4e-70fb-11f1-8376-02420aef221f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T01:06:40.927Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T01:06:41.160Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-26T01:06:41.510Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:etmcccjcN0IE92LT5hHsgItKRPzmwz0GIzCKtvJS3zJ8WYkgHGuhmw","callLegId":"43131580-70fb-11f1-95e3-02420aef221f","callSessionId":"43130b4e-70fb-11f1-8376-02420aef221f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-26T01:06:41.518Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T01:06:41.518Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T01:06:41.519Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"43130b4e-70fb-11f1-8376-02420aef221f:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T01:15:21.714Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T01:15:21.806Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T01:15:21.808Z LOG Recover Missed Call running on port 3000
2026-06-26T01:15:21.808Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T01:15:21.808Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T01:45:21.856Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-26T01:45:22.145Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dd9b277015dcde1384e14","recipientCount":1}}}
2026-06-26T01:46:25.523Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T01:46:25.525Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Ant issue","providerMessageSid":"textbee:6a3dd9f177015dcde1385d42"}
2026-06-26T01:46:25.545Z LOG [Inbound SMS linked to lead] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-26T01:46:25.618Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","messageId":"27e0da76-24a2-47a5-a610-dd3825365c9f","messageProviderSid":"textbee:6a3dd9f177015dcde1385d42","mode":"webhook_fast_save"}
2026-06-26T01:46:25.635Z LOG [SMS cost guard disabled for testing] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T01:46:25.647Z LOG [Conversation field rebuild captured fields] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","context":"before_dispatcher_router","gained":["pest_type"],"customerName":null,"serviceAddress":null,"serviceType":"Ants","propertyType":null,"urgency":null}
2026-06-26T01:46:25.680Z LOG [Customer SMS reply attempt] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_name_retry","provider":"textbee","messageLength":67}
2026-06-26T01:46:25.680Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":67}
2026-06-26T01:46:25.919Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dd9f277015dcde1385da5","recipientCount":1}}}
2026-06-26T01:46:25.920Z LOG [Customer SMS reply sent] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_name_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3dd9f277015dcde1385da5\",\"recipientCount\":1}}"}
2026-06-26T01:46:25.931Z LOG [SMS webhook async AI continuation completed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","providerMessageSid":"textbee:6a3dd9f177015dcde1385d42"}
2026-06-26T01:46:33.991Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T01:46:34.019Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck","providerMessageSid":"textbee:6a3dd9fa77015dcde1385f3a"}
2026-06-26T01:46:34.084Z LOG [Inbound SMS linked to lead] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-26T01:46:34.137Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","messageId":"eb87eda3-e1e4-4a12-ae28-11fdefb8cd2c","messageProviderSid":"textbee:6a3dd9fa77015dcde1385f3a","mode":"webhook_fast_save"}
2026-06-26T01:46:34.154Z LOG [SMS cost guard disabled for testing] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T01:46:34.216Z LOG [Deterministic required-field reply captured] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","expectedField":"customer_name","capturedValue":"Chuck","hasRequiredLeadDetails":false}
2026-06-26T01:46:34.222Z LOG [Customer SMS reply attempt] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_customer_name_captured_continue","provider":"textbee","messageLength":69}
2026-06-26T01:46:34.222Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":69}
2026-06-26T01:46:34.465Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dd9fb77015dcde1385f66","recipientCount":1}}}
2026-06-26T01:46:34.465Z LOG [Customer SMS reply sent] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_customer_name_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3dd9fb77015dcde1385f66\",\"recipientCount\":1}}"}
2026-06-26T01:46:34.477Z LOG [SMS webhook async AI continuation completed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","providerMessageSid":"textbee:6a3dd9fa77015dcde1385f3a"}
2026-06-26T01:46:49.558Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T01:46:49.559Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a3dda0a77015dcde13864a1"}
2026-06-26T01:46:49.567Z LOG [Inbound SMS linked to lead] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-26T01:46:49.587Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","messageId":"2582b7d6-af8d-4c2e-a2bd-309850c49c9c","messageProviderSid":"textbee:6a3dda0a77015dcde13864a1","mode":"webhook_fast_save"}
2026-06-26T01:46:49.609Z LOG [SMS cost guard disabled for testing] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T01:46:49.623Z LOG [Conversation field rebuild captured fields] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","context":"before_dispatcher_router","gained":["service_address"],"customerName":null,"serviceAddress":"33536 Unicorn Ct, Westland, MI 48186","serviceType":null,"propertyType":null,"urgency":null}
2026-06-26T01:46:52.419Z LOG [Service area check] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-26T01:46:52.422Z LOG [Customer SMS reply attempt] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":94}
2026-06-26T01:46:52.423Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-26T01:46:52.680Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dda0d77015dcde1386584","recipientCount":1}}}
2026-06-26T01:46:52.681Z LOG [Customer SMS reply sent] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3dda0d77015dcde1386584\",\"recipientCount\":1}}"}
2026-06-26T01:46:52.689Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — is this for a home/residential property or a commercial business?"}
2026-06-26T01:46:52.694Z LOG [Owner alert check] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-26T01:46:52.696Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","status":"intake","qualified":0,"serviceType":"Ants","reason":"not enough qualified details yet"}
2026-06-26T01:46:52.696Z LOG [SMS webhook async AI continuation completed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","providerMessageSid":"textbee:6a3dda0a77015dcde13864a1"}
2026-06-26T01:47:04.138Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T01:47:04.139Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3dda1877015dcde1386948"}
2026-06-26T01:47:04.148Z LOG [Inbound SMS linked to lead] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-26T01:47:04.170Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","messageId":"74eb78b9-2a42-4c1a-a96a-d04a2fd31d38","messageProviderSid":"textbee:6a3dda1877015dcde1386948","mode":"webhook_fast_save"}
2026-06-26T01:47:04.181Z LOG [SMS cost guard disabled for testing] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T01:47:04.194Z LOG [Conversation field rebuild captured fields] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-26T01:47:04.213Z LOG [Deterministic required-field reply captured] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","expectedField":"urgency","capturedValue":"home","hasRequiredLeadDetails":true}
2026-06-26T01:47:04.217Z LOG [Service area check] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-26T01:47:04.284Z LOG [Customer SMS reply attempt] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_urgency_captured_continue","provider":"textbee","messageLength":108}
2026-06-26T01:47:04.284Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-26T01:47:04.518Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dda1977015dcde138698f","recipientCount":1}}}
2026-06-26T01:47:04.518Z LOG [Customer SMS reply sent] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","context":"deterministic_urgency_captured_continue","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3dda1977015dcde138698f\",\"recipientCount\":1}}"}
2026-06-26T01:47:04.548Z LOG [Owner alert check] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-26T01:47:05.607Z LOG [Owner alert sending] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-26T01:47:05.609Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck\nPhone: +13133141123\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, ","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-26T01:47:05.609Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":388}
2026-06-26T01:47:05.782Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3dda1a77015dcde1386a03","recipientCount":1}}}
2026-06-26T01:47:05.782Z LOG [Owner SMS TextBee result] accepted
2026-06-26T01:47:05.782Z LOG [Owner alert sms result] sent/accepted
2026-06-26T01:47:06.135Z LOG [Owner alert email result] sent/accepted
2026-06-26T01:47:06.144Z LOG [Owner alert completed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-26T01:47:06.146Z LOG [SMS webhook async AI continuation completed] {"leadId":"72bd04ae-34e2-4557-89b1-5ede13d43431","phone":"+13133141123","providerMessageSid":"textbee:6a3dda1877015dcde1386948"}
2026-06-26T10:31:58.234Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T10:31:58.246Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T10:31:58.248Z LOG Recover Missed Call running on port 3000
2026-06-26T10:31:58.316Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T10:31:58.316Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T10:53:43.072Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+13133141123","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:J3MkC11u8siis4BZJ-WSqA9u96uMnD_9NtAunWEJpW52zeXA3KIvew","callLegId":"4c06faf6-714d-11f1-ac3f-02420aef24a0","callSessionId":"4c06f24a-714d-11f1-b659-02420aef24a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-26T10:53:43.303Z LOG [Voice routing decision] {"from":"+13133141123","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-26T10:53:43.873Z LOG [Telnyx voice command ok: answer]
2026-06-26T10:53:43.874Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T10:53:43.875Z LOG [Missed-call recovery triggered] {"key":"4c06f24a-714d-11f1-b659-02420aef24a0:any_recovery","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T10:53:43.920Z LOG [Missed-call SMS delay started] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-26T10:53:44.202Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:J3MkC11u8siis4BZJ-WSqA9u96uMnD_9NtAunWEJpW52zeXA3KIvew","callLegId":"4c06faf6-714d-11f1-ac3f-02420aef24a0","callSessionId":"4c06f24a-714d-11f1-b659-02420aef24a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-26T10:53:44.220Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T10:53:44.221Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T10:53:44.221Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4c06f24a-714d-11f1-b659-02420aef24a0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T10:53:44.345Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-26T10:53:45.526Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:J3MkC11u8siis4BZJ-WSqA9u96uMnD_9NtAunWEJpW52zeXA3KIvew","callLegId":"4c06faf6-714d-11f1-ac3f-02420aef24a0","callSessionId":"4c06f24a-714d-11f1-b659-02420aef24a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-26T10:53:45.543Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T10:53:45.544Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T10:53:45.544Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4c06f24a-714d-11f1-b659-02420aef24a0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T10:53:45.545Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T10:53:50.942Z LOG [Missed-call recovery SMS attempt] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-26T10:53:50.943Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-26T10:53:51.590Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3e5a3f77015dcde16ee05d","recipientCount":1}}}
2026-06-26T10:53:51.595Z LOG [Missed-call recovery SMS sent] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3e5a3f77015dcde16ee05d\",\"recipientCount\":1}}"}
2026-06-26T10:53:51.604Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-26T10:53:55.033Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:J3MkC11u8siis4BZJ-WSqA9u96uMnD_9NtAunWEJpW52zeXA3KIvew","callLegId":"4c06faf6-714d-11f1-ac3f-02420aef24a0","callSessionId":"4c06f24a-714d-11f1-b659-02420aef24a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-26T10:53:55.040Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T10:53:55.040Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T10:53:55.040Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4c06f24a-714d-11f1-b659-02420aef24a0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T10:53:55.040Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T10:53:55.335Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-26T10:53:55.617Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+13133141123","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:J3MkC11u8siis4BZJ-WSqA9u96uMnD_9NtAunWEJpW52zeXA3KIvew","callLegId":"4c06faf6-714d-11f1-ac3f-02420aef24a0","callSessionId":"4c06f24a-714d-11f1-b659-02420aef24a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-26T10:53:55.626Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+13133141123","source":"inbound_call_text_fallback"}
2026-06-26T10:53:55.626Z LOG [Missed-call recovery queued in background] {"phone":"+13133141123","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T10:53:55.626Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4c06f24a-714d-11f1-b659-02420aef24a0:any_recovery","phone":"+13133141123","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T10:55:58.285Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T10:55:58.288Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 123 Main St, Romulus, MI 48186 - have issues with bees","providerMessageSid":"textbee:6a3e5abe77015dcde16f2ee2"}
2026-06-26T10:55:58.313Z LOG [Inbound SMS linked to lead] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-26T10:55:58.367Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","messageId":"e3971e5a-046d-4930-a72b-c865d7ffab65","messageProviderSid":"textbee:6a3e5abe77015dcde16f2ee2","mode":"webhook_fast_save"}
2026-06-26T10:55:58.421Z LOG [SMS cost guard disabled for testing] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T10:55:58.474Z LOG [Conversation field rebuild captured fields] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","context":"before_dispatcher_router","gained":["customer_name","service_address","pest_type"],"customerName":"Chuck Simms","serviceAddress":"123 Main St, Romulus, MI 48186","serviceType":"Stinging Insects","propertyType":null,"urgency":null}
2026-06-26T10:55:58.571Z LOG [Customer SMS reply attempt] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"deterministic_property_type_retry","provider":"textbee","messageLength":73}
2026-06-26T10:55:58.571Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":73}
2026-06-26T10:55:59.013Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3e5abf77015dcde16f2f6d","recipientCount":1}}}
2026-06-26T10:55:59.013Z LOG [Customer SMS reply sent] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"deterministic_property_type_retry","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3e5abf77015dcde16f2f6d\",\"recipientCount\":1}}"}
2026-06-26T10:55:59.022Z LOG [SMS webhook async AI continuation completed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","providerMessageSid":"textbee:6a3e5abe77015dcde16f2ee2"}
2026-06-26T10:56:10.752Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T10:56:10.753Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a3e5aca77015dcde16f361d"}
2026-06-26T10:56:10.763Z LOG [Inbound SMS linked to lead] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-26T10:56:10.791Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","messageId":"cd8fe69c-5562-4c66-bd9d-6522fed58664","messageProviderSid":"textbee:6a3e5aca77015dcde16f361d","mode":"webhook_fast_save"}
2026-06-26T10:56:10.799Z LOG [SMS cost guard disabled for testing] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T10:56:10.810Z LOG [Conversation field rebuild captured fields] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","context":"before_dispatcher_router","gained":["property_type"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":"Residential","urgency":null}
2026-06-26T10:56:15.389Z LOG [Service area check] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-26T10:56:15.396Z LOG [Customer SMS reply attempt] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":150}
2026-06-26T10:56:15.396Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-26T10:56:16.832Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3e5ad077015dcde16f39db","recipientCount":1}}}
2026-06-26T10:56:16.832Z LOG [Customer SMS reply sent] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3e5ad077015dcde16f39db\",\"recipientCount\":1}}"}
2026-06-26T10:56:16.844Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-26T10:56:16.849Z LOG [Owner alert check] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":false,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-26T10:56:16.851Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","status":"intake","qualified":0,"serviceType":"Stinging Insects","reason":"not enough qualified details yet"}
2026-06-26T10:56:16.851Z LOG [SMS webhook async AI continuation completed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","providerMessageSid":"textbee:6a3e5aca77015dcde16f361d"}
2026-06-26T10:56:34.134Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-26T10:56:34.135Z LOG [Incoming SMS received] {"provider":"textbee","from":"+13133141123","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a3e5ae277015dcde16f44ec"}
2026-06-26T10:56:34.142Z LOG [Inbound SMS linked to lead] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-26T10:56:34.187Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","messageId":"795d6afb-ff90-4d36-93bb-06f0d06d0890","messageProviderSid":"textbee:6a3e5ae277015dcde16f44ec","mode":"webhook_fast_save"}
2026-06-26T10:56:34.194Z LOG [SMS cost guard disabled for testing] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","smsRestrictionsEnabled":false}
2026-06-26T10:56:34.213Z LOG [Conversation field rebuild captured fields] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","context":"before_dispatcher_router","gained":["urgency","preferred_time"],"customerName":null,"serviceAddress":null,"serviceType":null,"propertyType":null,"urgency":"This Week"}
2026-06-26T10:56:35.806Z LOG [Service area check] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-26T10:56:35.819Z LOG [Customer SMS reply attempt] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","messageLength":108}
2026-06-26T10:56:35.820Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-26T10:56:36.335Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3e5ae477015dcde16f4671","recipientCount":1}}}
2026-06-26T10:56:36.335Z LOG [Customer SMS reply sent] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3e5ae477015dcde16f4671\",\"recipientCount\":1}}"}
2026-06-26T10:56:36.349Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","hasRequiredLeadDetails":true,"status":"qualified","qualified":1,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-26T10:56:36.353Z LOG [Owner alert check] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":false}
2026-06-26T10:56:37.850Z LOG [Owner alert sending] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-26T10:56:37.852Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +13133141123\nIssue: Stinging Insects\nAddress: 123 Main S","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-26T10:56:37.853Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":497}
2026-06-26T10:56:38.436Z LOG [Owner alert email result] sent/accepted
2026-06-26T10:56:39.082Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3e5ae777015dcde16f481d","recipientCount":1}}}
2026-06-26T10:56:39.083Z LOG [Owner SMS TextBee result] accepted
2026-06-26T10:56:39.083Z LOG [Owner alert sms result] sent/accepted
2026-06-26T10:56:39.091Z LOG [Owner alert completed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-26T10:56:39.092Z LOG [SMS webhook async AI continuation completed] {"leadId":"7cc107a7-3276-4199-9f29-0d535554244f","phone":"+13133141123","providerMessageSid":"textbee:6a3e5ae277015dcde16f44ec"}
2026-06-26T11:16:03.941Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T11:16:04.020Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T11:16:04.044Z LOG Recover Missed Call running on port 3000
2026-06-26T11:16:04.063Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T11:16:04.085Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T15:01:41.930Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T15:01:41.945Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T15:01:42.016Z LOG Recover Missed Call running on port 3000
2026-06-26T15:01:42.016Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T15:01:42.016Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T20:22:48.524Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T20:22:48.627Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T20:22:48.629Z LOG Recover Missed Call running on port 3000
2026-06-26T20:22:48.629Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T20:22:48.629Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T20:31:42.140Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T20:31:42.226Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T20:31:42.227Z LOG Recover Missed Call running on port 3000
2026-06-26T20:31:42.228Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T20:31:42.228Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T21:52:52.451Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:jRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA","callLegId":"60938190-71a9-11f1-8d13-12d13600a98c","callSessionId":"6093742a-71a9-11f1-9dc7-12d13600a98c","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-26T21:52:52.525Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-26T21:52:52.931Z LOG [Telnyx voice command ok: answer]
2026-06-26T21:52:52.932Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T21:52:52.933Z LOG [Missed-call recovery triggered] {"key":"6093742a-71a9-11f1-9dc7-12d13600a98c:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-26T21:52:52.961Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-26T21:52:53.185Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:jRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA","callLegId":"60938190-71a9-11f1-8d13-12d13600a98c","callSessionId":"6093742a-71a9-11f1-9dc7-12d13600a98c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","sip_headers","start_time","to"]}
2026-06-26T21:52:53.201Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-26T21:52:53.201Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T21:52:53.202Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6093742a-71a9-11f1-9dc7-12d13600a98c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-26T21:52:53.344Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-26T21:52:54.140Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:jRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA","callLegId":"60938190-71a9-11f1-8d13-12d13600a98c","callSessionId":"6093742a-71a9-11f1-9dc7-12d13600a98c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-26T21:52:54.158Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-26T21:52:54.159Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T21:52:54.159Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6093742a-71a9-11f1-9dc7-12d13600a98c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-26T21:52:54.159Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T21:52:57.270Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:jRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA","callLegId":"60938190-71a9-11f1-8d13-12d13600a98c","callSessionId":"6093742a-71a9-11f1-9dc7-12d13600a98c","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-26T21:52:57.289Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-26T21:52:57.289Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T21:52:57.290Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6093742a-71a9-11f1-9dc7-12d13600a98c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-26T21:52:57.290Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-26T21:52:57.299Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:jRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA","callLegId":"60938190-71a9-11f1-8d13-12d13600a98c","callSessionId":"6093742a-71a9-11f1-9dc7-12d13600a98c","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-26T21:52:57.313Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-26T21:52:57.313Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T21:52:57.313Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"6093742a-71a9-11f1-9dc7-12d13600a98c:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-26T21:52:57.423Z ERROR [Telnyx API error] {"path":"/calls/v3%3AjRgPjBzepUV1d4dtQHFVvn8ruIs3NfLRe_ytSbmb3MEARhSz2uXESA/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-26T21:52:57.424Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-26T21:52:59.973Z LOG [Missed-call recovery SMS attempt] {"leadId":"9fee19f7-5bc0-4067-8700-6202c8ca6dc9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-26T21:52:59.974Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-26T21:53:00.627Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3ef4bc77015dcde1ad7b43","recipientCount":1}}}
2026-06-26T21:53:00.634Z LOG [Missed-call recovery SMS sent] {"leadId":"9fee19f7-5bc0-4067-8700-6202c8ca6dc9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a3ef4bc77015dcde1ad7b43\",\"recipientCount\":1}}"}
2026-06-26T21:53:00.647Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"9fee19f7-5bc0-4067-8700-6202c8ca6dc9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-26T22:30:33.950Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":145}
2026-06-26T22:30:34.360Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3efd8a77015dcde1b1596d","recipientCount":1}}}
2026-06-26T22:47:12.341Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T22:47:12.428Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T22:47:12.429Z LOG Recover Missed Call running on port 3000
2026-06-26T22:47:12.429Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T22:47:12.429Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-26T23:11:07.835Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-26T23:11:07.847Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-26T23:11:07.916Z LOG Recover Missed Call running on port 3000
2026-06-26T23:11:07.916Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-26T23:11:07.916Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T06:41:08.111Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":146}
2026-06-27T06:41:08.891Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3f708577015dcde1d95258","recipientCount":1}}}
2026-06-27T08:43:29.673Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T08:43:29.832Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T08:43:29.833Z LOG Recover Missed Call running on port 3000
2026-06-27T08:43:29.833Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T08:43:29.833Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T09:15:04.030Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T09:15:04.209Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T09:15:04.211Z LOG Recover Missed Call running on port 3000
2026-06-27T09:15:04.212Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T09:15:04.212Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T10:57:41.879Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T10:57:41.973Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T10:57:41.974Z LOG Recover Missed Call running on port 3000
2026-06-27T10:57:41.975Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T10:57:41.975Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T11:04:30.594Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T11:04:30.685Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T11:04:30.686Z LOG Recover Missed Call running on port 3000
2026-06-27T11:04:30.686Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T11:04:30.686Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T11:10:35.473Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T11:10:35.496Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T11:10:35.498Z LOG Recover Missed Call running on port 3000
2026-06-27T11:10:35.498Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T11:10:35.498Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T15:00:34.309Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":146}
2026-06-27T15:00:46.181Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a3fe59c77015dcde1063b3e","recipientCount":1}}}
2026-06-27T21:01:41.286Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T21:01:41.373Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T21:01:41.374Z LOG Recover Missed Call running on port 3000
2026-06-27T21:01:41.375Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T21:01:41.375Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T21:21:41.696Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T21:21:41.780Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T21:21:41.781Z LOG Recover Missed Call running on port 3000
2026-06-27T21:21:41.781Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T21:21:41.781Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T21:22:21.939Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:fFGz4tb9SjtTbUkqNXFPbf1_aX0njAenZODfjbqOLb2-VKVg0wu0WA","callLegId":"48def94c-726e-11f1-bf1a-7261fe1af920","callSessionId":"48def352-726e-11f1-a4d8-7261fe1af920","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-27T21:22:22.066Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-27T21:22:22.295Z LOG [Telnyx voice command ok: answer]
2026-06-27T21:22:22.296Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-27T21:22:22.297Z LOG [Missed-call recovery triggered] {"key":"48def352-726e-11f1-a4d8-7261fe1af920:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-27T21:22:22.317Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-27T21:22:22.420Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:fFGz4tb9SjtTbUkqNXFPbf1_aX0njAenZODfjbqOLb2-VKVg0wu0WA","callLegId":"48def94c-726e-11f1-bf1a-7261fe1af920","callSessionId":"48def352-726e-11f1-a4d8-7261fe1af920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-27T21:22:22.437Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T21:22:22.437Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-27T21:22:22.437Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"48def352-726e-11f1-a4d8-7261fe1af920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-27T21:22:22.512Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-27T21:22:22.872Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:fFGz4tb9SjtTbUkqNXFPbf1_aX0njAenZODfjbqOLb2-VKVg0wu0WA","callLegId":"48def94c-726e-11f1-bf1a-7261fe1af920","callSessionId":"48def352-726e-11f1-a4d8-7261fe1af920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-27T21:22:22.887Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T21:22:22.888Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-27T21:22:22.888Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"48def352-726e-11f1-a4d8-7261fe1af920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-27T21:22:22.889Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-27T21:22:29.333Z LOG [Missed-call recovery SMS attempt] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-27T21:22:29.334Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-27T21:22:29.763Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a403f1677015dcde128b312","recipientCount":1}}}
2026-06-27T21:22:29.779Z LOG [Missed-call recovery SMS sent] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a403f1677015dcde128b312\",\"recipientCount\":1}}"}
2026-06-27T21:22:29.795Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-27T21:22:32.457Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:fFGz4tb9SjtTbUkqNXFPbf1_aX0njAenZODfjbqOLb2-VKVg0wu0WA","callLegId":"48def94c-726e-11f1-bf1a-7261fe1af920","callSessionId":"48def352-726e-11f1-a4d8-7261fe1af920","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-27T21:22:32.464Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T21:22:32.464Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-27T21:22:32.464Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"48def352-726e-11f1-a4d8-7261fe1af920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-27T21:22:32.464Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-27T21:22:32.603Z LOG [Telnyx voice command ok: hangup_after_hours_message]
2026-06-27T21:22:32.697Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:fFGz4tb9SjtTbUkqNXFPbf1_aX0njAenZODfjbqOLb2-VKVg0wu0WA","callLegId":"48def94c-726e-11f1-bf1a-7261fe1af920","callSessionId":"48def352-726e-11f1-a4d8-7261fe1af920","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-27T21:22:32.703Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T21:22:32.704Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-27T21:22:32.704Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"48def352-726e-11f1-a4d8-7261fe1af920:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-27T21:23:03.431Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T21:23:03.433Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186 - need help with ants","providerMessageSid":"textbee:6a403f3777015dcde128b9de"}
2026-06-27T21:23:03.445Z LOG [Inbound SMS linked to lead] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-27T21:23:03.489Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","messageId":"6731a930-97fa-4c03-a10c-2aa7c4618f43","messageProviderSid":"textbee:6a403f3777015dcde128b9de","mode":"webhook_fast_save"}
2026-06-27T21:23:03.536Z LOG [SMS cost guard disabled for testing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T21:23:03.586Z LOG [Service area check] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T21:23:03.618Z LOG [Customer SMS reply attempt] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":94}
2026-06-27T21:23:03.618Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-27T21:23:04.011Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a403f3877015dcde128ba2e","recipientCount":1}}}
2026-06-27T21:23:04.011Z LOG [Customer SMS reply sent] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a403f3877015dcde128ba2e\",\"recipientCount\":1}}"}
2026-06-27T21:23:04.022Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this for a home/residential property or a commercial business?"}
2026-06-27T21:23:04.023Z LOG [SMS webhook async AI continuation completed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","providerMessageSid":"textbee:6a403f3777015dcde128b9de"}
2026-06-27T21:23:16.864Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T21:23:16.865Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a403f4477015dcde128be55"}
2026-06-27T21:23:16.874Z LOG [Inbound SMS linked to lead] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-27T21:23:16.883Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","messageId":"50e4ae60-3392-4615-bd7b-c4c811460f8f","messageProviderSid":"textbee:6a403f4477015dcde128be55","mode":"webhook_fast_save"}
2026-06-27T21:23:16.891Z LOG [SMS cost guard disabled for testing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T21:23:16.908Z LOG [Service area check] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T21:23:16.913Z LOG [Customer SMS reply attempt] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-27T21:23:16.913Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-27T21:23:17.124Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a403f4577015dcde128be83","recipientCount":1}}}
2026-06-27T21:23:17.124Z LOG [Customer SMS reply sent] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a403f4577015dcde128be83\",\"recipientCount\":1}}"}
2026-06-27T21:23:17.142Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-27T21:23:17.144Z LOG [SMS webhook async AI continuation completed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","providerMessageSid":"textbee:6a403f4477015dcde128be55"}
2026-06-27T21:23:36.877Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T21:23:36.877Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a403f5977015dcde128c345"}
2026-06-27T21:23:36.884Z LOG [Inbound SMS linked to lead] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-27T21:23:36.906Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","messageId":"1f2c1c49-8e48-4889-bd72-3faa3f35c49e","messageProviderSid":"textbee:6a403f5977015dcde128c345","mode":"webhook_fast_save"}
2026-06-27T21:23:36.916Z LOG [SMS cost guard disabled for testing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T21:23:36.942Z LOG [Service area check] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T21:23:36.971Z LOG [Customer SMS reply attempt] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":108}
2026-06-27T21:23:36.971Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-27T21:23:37.229Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a403f5977015dcde128c36b","recipientCount":1}}}
2026-06-27T21:23:37.229Z LOG [Customer SMS reply sent] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a403f5977015dcde128c36b\",\"recipientCount\":1}}"}
2026-06-27T21:23:37.255Z LOG [Owner alert check] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-27T21:23:39.313Z LOG [Owner alert sending] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-27T21:23:39.315Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 33536 Unicorn Ct, West","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-27T21:23:39.315Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":389}
2026-06-27T21:23:39.492Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a403f5b77015dcde128c429","recipientCount":1}}}
2026-06-27T21:23:39.492Z LOG [Owner SMS TextBee result] accepted
2026-06-27T21:23:39.492Z LOG [Owner alert sms result] sent/accepted
2026-06-27T21:23:39.815Z LOG [Owner alert email result] sent/accepted
2026-06-27T21:23:39.823Z LOG [Owner alert completed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-27T21:23:39.823Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-27T21:23:39.826Z LOG [SMS webhook async AI continuation completed] {"leadId":"fb0f5fd2-59d1-4373-b495-9e88dd22d0f9","phone":"+14783092224","providerMessageSid":"textbee:6a403f5977015dcde128c345"}
2026-06-27T21:31:36.980Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T21:31:36.992Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T21:31:36.993Z LOG Recover Missed Call running on port 3000
2026-06-27T21:31:36.993Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T21:31:36.993Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T21:41:11.979Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T21:41:11.998Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T21:41:12.000Z LOG Recover Missed Call running on port 3000
2026-06-27T21:41:12.000Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T21:41:12.000Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T22:29:34.599Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T22:29:34.678Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T22:29:34.679Z LOG Recover Missed Call running on port 3000
2026-06-27T22:29:34.679Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T22:29:34.680Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T22:29:36.685Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-27T22:29:36.702Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-27T22:29:36.703Z LOG Recover Missed Call running on port 3000
2026-06-27T22:29:36.703Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-27T22:29:36.704Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-27T22:30:02.502Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ","callLegId":"bce2a2fe-7277-11f1-b11c-02420aef201f","callSessionId":"bce29b74-7277-11f1-940b-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-27T22:30:02.644Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-27T22:30:03.230Z LOG [Telnyx voice command ok: answer]
2026-06-27T22:30:03.231Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-27T22:30:03.232Z LOG [Missed-call recovery triggered] {"key":"bce29b74-7277-11f1-940b-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-27T22:30:03.298Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-27T22:30:03.614Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ","callLegId":"bce2a2fe-7277-11f1-b11c-02420aef201f","callSessionId":"bce29b74-7277-11f1-940b-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-27T22:30:03.629Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T22:30:03.629Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-27T22:30:03.630Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"bce29b74-7277-11f1-940b-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-27T22:30:03.769Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-27T22:30:04.851Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ","callLegId":"bce2a2fe-7277-11f1-b11c-02420aef201f","callSessionId":"bce29b74-7277-11f1-940b-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-27T22:30:04.859Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T22:30:04.860Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-27T22:30:04.860Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"bce29b74-7277-11f1-940b-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-27T22:30:04.860Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-27T22:30:09.132Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ","callLegId":"bce2a2fe-7277-11f1-b11c-02420aef201f","callSessionId":"bce29b74-7277-11f1-940b-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-27T22:30:09.145Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T22:30:09.145Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-27T22:30:09.146Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"bce29b74-7277-11f1-940b-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-27T22:30:09.177Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ","callLegId":"bce2a2fe-7277-11f1-b11c-02420aef201f","callSessionId":"bce29b74-7277-11f1-940b-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-27T22:30:09.189Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-27T22:30:09.190Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-27T22:30:09.190Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"bce29b74-7277-11f1-940b-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-27T22:30:09.190Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-27T22:30:09.322Z ERROR [Telnyx API error] {"path":"/calls/v3%3A8wKwqTDNEJsrPBvy1irA2jQKu-JSiFPYmGUdy2Pj-iL009HX26JLRQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-27T22:30:09.324Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-27T22:30:10.314Z LOG [Missed-call recovery SMS attempt] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-27T22:30:10.315Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":147}
2026-06-27T22:30:11.863Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a404ef377015dcde12d90fb","recipientCount":1}}}
2026-06-27T22:30:11.878Z LOG [Missed-call recovery SMS sent] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a404ef377015dcde12d90fb\",\"recipientCount\":1}}"}
2026-06-27T22:30:11.957Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-27T22:30:43.684Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T22:30:43.686Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Ants in the pants, Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186","providerMessageSid":"textbee:6a404f1377015dcde12d9b16"}
2026-06-27T22:30:43.694Z LOG [Inbound SMS linked to lead] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-27T22:30:43.734Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","messageId":"4db41415-6579-429b-987a-27a15cf93a52","messageProviderSid":"textbee:6a404f1377015dcde12d9b16","mode":"webhook_fast_save"}
2026-06-27T22:30:43.772Z LOG [SMS cost guard disabled for testing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T22:30:43.835Z LOG [Service area check] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T22:30:43.880Z LOG [Customer SMS reply attempt] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":94}
2026-06-27T22:30:43.881Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":94}
2026-06-27T22:30:44.143Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a404f1477015dcde12d9b94","recipientCount":1}}}
2026-06-27T22:30:44.143Z LOG [Customer SMS reply sent] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a404f1477015dcde12d9b94\",\"recipientCount\":1}}"}
2026-06-27T22:30:44.150Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — is this for a home/residential property or a commercial business?"}
2026-06-27T22:30:44.152Z LOG [SMS webhook async AI continuation completed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","providerMessageSid":"textbee:6a404f1377015dcde12d9b16"}
2026-06-27T22:31:03.930Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T22:31:03.931Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a404f2877015dcde12da2c2"}
2026-06-27T22:31:03.939Z LOG [Inbound SMS linked to lead] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-27T22:31:04.000Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","messageId":"b8d97720-e5ad-4270-b633-57ea6c3d71dd","messageProviderSid":"textbee:6a404f2877015dcde12da2c2","mode":"webhook_fast_save"}
2026-06-27T22:31:04.008Z LOG [SMS cost guard disabled for testing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T22:31:04.027Z LOG [Service area check] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T22:31:04.034Z LOG [Customer SMS reply attempt] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":150}
2026-06-27T22:31:04.035Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":150}
2026-06-27T22:31:04.350Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a404f2877015dcde12da325","recipientCount":1}}}
2026-06-27T22:31:04.350Z LOG [Customer SMS reply sent] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a404f2877015dcde12da325\",\"recipientCount\":1}}"}
2026-06-27T22:31:04.359Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thanks — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-27T22:31:04.360Z LOG [SMS webhook async AI continuation completed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","providerMessageSid":"textbee:6a404f2877015dcde12da2c2"}
2026-06-27T22:31:22.844Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-27T22:31:22.844Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a404f3b77015dcde12da8f3"}
2026-06-27T22:31:22.850Z LOG [Inbound SMS linked to lead] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-27T22:31:22.861Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","messageId":"8d094d45-28dc-4644-9c9a-7a59a3e8adc9","messageProviderSid":"textbee:6a404f3b77015dcde12da8f3","mode":"webhook_fast_save"}
2026-06-27T22:31:22.868Z LOG [SMS cost guard disabled for testing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-27T22:31:22.877Z LOG [Service area check] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-27T22:31:22.882Z LOG [Customer SMS reply attempt] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":108}
2026-06-27T22:31:22.882Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":108}
2026-06-27T22:31:23.257Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a404f3b77015dcde12da95e","recipientCount":1}}}
2026-06-27T22:31:23.258Z LOG [Customer SMS reply sent] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a404f3b77015dcde12da95e\",\"recipientCount\":1}}"}
2026-06-27T22:31:23.299Z LOG [Owner alert check] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-27T22:31:25.026Z LOG [Owner alert sending] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-27T22:31:25.028Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, MI 48","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-27T22:31:25.029Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":233}
2026-06-27T22:31:25.512Z LOG [Owner alert email result] sent/accepted
2026-06-27T22:31:25.772Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a404f3e77015dcde12daa63","recipientCount":1}}}
2026-06-27T22:31:25.772Z LOG [Owner SMS TextBee result] accepted
2026-06-27T22:31:25.772Z LOG [Owner alert sms result] sent/accepted
2026-06-27T22:31:25.777Z LOG [Owner alert completed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-27T22:31:25.777Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: You’re all set — I have your details. The office will review this and reach out shortly."}
2026-06-27T22:31:25.779Z LOG [SMS webhook async AI continuation completed] {"leadId":"6a0c5685-b232-4905-9ed9-aa432e390bcb","phone":"+14783092224","providerMessageSid":"textbee:6a404f3b77015dcde12da8f3"}
2026-06-28T05:31:57.907Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T05:31:57.917Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, Silverfish","providerMessageSid":"textbee:6a40b1ce77015dcde15150f7"}
2026-06-28T05:31:57.936Z LOG [Inbound SMS linked to lead] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T05:31:58.020Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","messageId":"a80b6985-5fc6-4a7b-97d2-c5771edc169a","messageProviderSid":"textbee:6a40b1ce77015dcde15150f7","mode":"webhook_fast_save"}
2026-06-28T05:31:58.105Z LOG [SMS cost guard disabled for testing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T05:31:58.127Z LOG [Service area check] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-28T05:31:58.134Z LOG [Customer SMS reply attempt] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":77}
2026-06-28T05:31:58.135Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":77}
2026-06-28T05:31:58.633Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40b1cf77015dcde1515194","recipientCount":1}}}
2026-06-28T05:31:58.634Z LOG [Customer SMS reply sent] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a40b1cf77015dcde1515194\",\"recipientCount\":1}}"}
2026-06-28T05:31:58.647Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — is this a residential or commercial property?"}
2026-06-28T05:31:58.649Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","providerMessageSid":"textbee:6a40b1ce77015dcde15150f7"}
2026-06-28T05:32:17.203Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T05:32:17.203Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a40b1e177015dcde15155d9"}
2026-06-28T05:32:17.218Z LOG [Inbound SMS linked to lead] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T05:32:17.234Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","messageId":"0a32744d-b9d5-4877-9df2-3b6f9c38dd4e","messageProviderSid":"textbee:6a40b1e177015dcde15155d9","mode":"webhook_fast_save"}
2026-06-28T05:32:17.249Z LOG [SMS cost guard disabled for testing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T05:32:17.272Z LOG [Service area check] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-28T05:32:17.276Z LOG [Customer SMS reply attempt] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":153}
2026-06-28T05:32:17.276Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":153}
2026-06-28T05:32:17.535Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40b1e277015dcde15155ff","recipientCount":1}}}
2026-06-28T05:32:17.536Z LOG [Customer SMS reply sent] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a40b1e277015dcde15155ff\",\"recipientCount\":1}}"}
2026-06-28T05:32:17.541Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-28T05:32:17.542Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","providerMessageSid":"textbee:6a40b1e177015dcde15155d9"}
2026-06-28T05:32:36.497Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T05:32:36.497Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a40b1f577015dcde1515e95"}
2026-06-28T05:32:36.504Z LOG [Inbound SMS linked to lead] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T05:32:36.510Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","messageId":"98e9fca7-9aa1-4ea9-87bb-fa6ed8975927","messageProviderSid":"textbee:6a40b1f577015dcde1515e95","mode":"webhook_fast_save"}
2026-06-28T05:32:36.518Z LOG [SMS cost guard disabled for testing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T05:32:36.525Z LOG [Service area check] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-28T05:32:36.531Z LOG [Customer SMS reply attempt] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-28T05:32:36.531Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-28T05:32:37.375Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40b1f677015dcde1515f3c","recipientCount":1}}}
2026-06-28T05:32:37.376Z LOG [Customer SMS reply sent] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a40b1f677015dcde1515f3c\",\"recipientCount\":1}}"}
2026-06-28T05:32:37.399Z LOG [Owner alert check] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-28T05:32:39.724Z LOG [Owner alert sending] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T05:32:39.726Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Silverfish\nAddress: 33536 Unicorn Ct, Westland,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T05:32:39.726Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":245}
2026-06-28T05:32:40.009Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40b1f877015dcde151609c","recipientCount":1}}}
2026-06-28T05:32:40.009Z LOG [Owner SMS TextBee result] accepted
2026-06-28T05:32:40.009Z LOG [Owner alert sms result] sent/accepted
2026-06-28T05:32:40.473Z LOG [Owner alert email result] sent/accepted
2026-06-28T05:32:40.479Z LOG [Owner alert completed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-28T05:32:40.480Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T05:32:40.483Z LOG [SMS webhook async AI continuation completed] {"leadId":"99ff0f80-8e86-4027-9013-6543abcbf4ad","phone":"+14783092224","providerMessageSid":"textbee:6a40b1f577015dcde1515e95"}
2026-06-28T07:02:49.691Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:02:49.798Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:02:49.799Z LOG Recover Missed Call running on port 3000
2026-06-28T07:02:49.799Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:02:49.800Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T07:12:01.085Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:12:01.097Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:12:01.098Z LOG Recover Missed Call running on port 3000
2026-06-28T07:12:01.098Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:12:01.098Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T07:16:55.073Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:16:55.097Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:16:55.099Z LOG Recover Missed Call running on port 3000
2026-06-28T07:16:55.099Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:16:55.099Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T07:20:53.388Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:20:53.401Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:20:53.402Z LOG Recover Missed Call running on port 3000
2026-06-28T07:20:53.402Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:20:53.403Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T07:26:18.805Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T07:26:18.810Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"I'm having problems with bees around the garage was wondering if I can get someo","providerMessageSid":"textbee:6a40cc9b77015dcde15b18a2"}
2026-06-28T07:26:18.884Z LOG [Inbound SMS linked to lead] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T07:26:18.934Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","messageId":"8ce8492a-da89-4914-bc22-b11da58c9925","messageProviderSid":"textbee:6a40cc9b77015dcde15b18a2","mode":"webhook_fast_save"}
2026-06-28T07:26:18.983Z LOG [SMS cost guard disabled for testing] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T07:26:19.054Z LOG [Service area check] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","status":"in_area","distanceMiles":11,"reason":"Customer location recognized as \"Plymouth, MI\". Business location recognized as \"Romulus, MI\". Estimated 11 miles from business location, within 25 miles."}
2026-06-28T07:26:19.089Z LOG [Customer SMS reply attempt] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":77}
2026-06-28T07:26:19.091Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":77}
2026-06-28T07:26:19.401Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40cc9c77015dcde15b18fd","recipientCount":1}}}
2026-06-28T07:26:19.402Z LOG [Customer SMS reply sent] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a40cc9c77015dcde15b18fd\",\"recipientCount\":1}}"}
2026-06-28T07:26:19.420Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — is this a residential or commercial property?"}
2026-06-28T07:26:19.423Z LOG [SMS webhook async AI continuation completed] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","providerMessageSid":"textbee:6a40cc9b77015dcde15b18a2"}
2026-06-28T07:26:32.727Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T07:26:32.728Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Home","providerMessageSid":"textbee:6a40cca977015dcde15b1e35"}
2026-06-28T07:26:32.741Z LOG [Inbound SMS linked to lead] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T07:26:32.762Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","messageId":"b1d34df9-feee-4adf-ac57-c33915c6a33c","messageProviderSid":"textbee:6a40cca977015dcde15b1e35","mode":"webhook_fast_save"}
2026-06-28T07:26:32.838Z LOG [SMS cost guard disabled for testing] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T07:26:32.855Z LOG [Service area check] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","status":"in_area","distanceMiles":11,"reason":"Customer location recognized as \"Plymouth, MI\". Business location recognized as \"Romulus, MI\". Estimated 11 miles from business location, within 25 miles."}
2026-06-28T07:26:32.862Z LOG [Customer SMS reply attempt] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-28T07:26:32.862Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-28T07:26:33.045Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40cca977015dcde15b1e79","recipientCount":1}}}
2026-06-28T07:26:33.046Z LOG [Customer SMS reply sent] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a40cca977015dcde15b1e79\",\"recipientCount\":1}}"}
2026-06-28T07:26:33.076Z LOG [Owner alert check] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerPhoneConfigured":true,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-28T07:26:35.131Z LOG [Owner alert sending] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T07:26:35.133Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nI'm\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Plymouth, MI\nUrg","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T07:26:35.134Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":257}
2026-06-28T07:26:35.519Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a40ccac77015dcde15b204f","recipientCount":1}}}
2026-06-28T07:26:35.520Z LOG [Owner SMS TextBee result] accepted
2026-06-28T07:26:35.520Z LOG [Owner alert sms result] sent/accepted
2026-06-28T07:26:35.594Z LOG [Owner alert email result] sent/accepted
2026-06-28T07:26:35.601Z LOG [Owner alert completed] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","results":[{"label":"sms","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-28T07:26:35.602Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T07:26:35.604Z LOG [SMS webhook async AI continuation completed] {"leadId":"1baf28f5-9a23-40cb-9ec3-22f66cbbded5","phone":"+14783092224","providerMessageSid":"textbee:6a40cca977015dcde15b1e35"}
2026-06-28T07:32:40.080Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:32:40.095Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:32:40.096Z LOG Recover Missed Call running on port 3000
2026-06-28T07:32:40.097Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:32:40.097Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T07:42:10.793Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T07:42:10.881Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T07:42:10.882Z LOG Recover Missed Call running on port 3000
2026-06-28T07:42:10.883Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T07:42:10.883Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T12:26:14.581Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T12:26:14.697Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T12:26:14.698Z LOG Recover Missed Call running on port 3000
2026-06-28T12:26:14.698Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T12:26:14.698Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T12:29:36.819Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T12:29:36.821Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms here, need help with ants around house, 123 Elm Dr, Romulus, MI 4817","providerMessageSid":"textbee:6a4113b177015dcde175c76c"}
2026-06-28T12:29:36.842Z LOG [Inbound SMS linked to lead] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T12:29:37.083Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","messageId":"7f8b0b2c-a661-4207-857c-2d6a4e6557cd","messageProviderSid":"textbee:6a4113b177015dcde175c76c","mode":"webhook_fast_save"}
2026-06-28T12:29:37.108Z LOG [SMS cost guard disabled for testing] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T12:29:37.170Z LOG [Service area check] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-28T12:29:37.203Z LOG [Customer SMS reply attempt] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":153}
2026-06-28T12:29:37.204Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":153}
2026-06-28T12:29:37.483Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4113b277015dcde175c7c1","recipientCount":1}}}
2026-06-28T12:29:37.484Z LOG [Customer SMS reply sent] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4113b277015dcde175c7c1\",\"recipientCount\":1}}"}
2026-06-28T12:29:37.563Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-28T12:29:37.566Z LOG [SMS webhook async AI continuation completed] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","providerMessageSid":"textbee:6a4113b177015dcde175c76c"}
2026-06-28T12:29:54.527Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T12:29:54.527Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"this week","providerMessageSid":"textbee:6a4113c377015dcde175cc12"}
2026-06-28T12:29:54.535Z LOG [Inbound SMS linked to lead] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T12:29:54.548Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","messageId":"054988b5-28c1-4ce4-9148-e4afd4050832","messageProviderSid":"textbee:6a4113c377015dcde175cc12","mode":"webhook_fast_save"}
2026-06-28T12:29:54.563Z LOG [SMS cost guard disabled for testing] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T12:29:54.581Z LOG [Service area check] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-28T12:29:54.591Z LOG [Customer SMS reply attempt] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-28T12:29:54.592Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-28T12:29:54.800Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4113c377015dcde175cc38","recipientCount":1}}}
2026-06-28T12:29:54.800Z LOG [Customer SMS reply sent] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4113c377015dcde175cc38\",\"recipientCount\":1}}"}
2026-06-28T12:29:54.826Z LOG [Owner alert check] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":2,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-28T12:29:57.116Z LOG [Owner alert sending] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T12:29:57.118Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 123 Elm Dr, Romulus, MI 48174\nUrg","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T12:29:57.119Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":231}
2026-06-28T12:29:57.121Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+14783092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 123 Elm Dr, Romulus, MI 48174\nUrg","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T12:29:57.121Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":231}
2026-06-28T12:29:57.833Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4113c677015dcde175ccf0","recipientCount":1}}}
2026-06-28T12:29:57.833Z LOG [Owner SMS TextBee result] accepted
2026-06-28T12:29:57.833Z LOG [Owner alert qualified lead sms 1/2 result] sent/accepted
2026-06-28T12:29:57.841Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4113c677015dcde175cd04","recipientCount":1}}}
2026-06-28T12:29:57.842Z LOG [Owner SMS TextBee result] accepted
2026-06-28T12:29:57.842Z LOG [Owner alert qualified lead sms 2/2 result] sent/accepted
2026-06-28T12:29:58.430Z LOG [Owner alert email result] sent/accepted
2026-06-28T12:29:58.450Z LOG [Owner alert completed] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","results":[{"label":"qualified lead sms 1/2","ok":true,"skipped":false},{"label":"qualified lead sms 2/2","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-28T12:29:58.450Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T12:29:58.452Z LOG [SMS webhook async AI continuation completed] {"leadId":"1b64a7b6-e89c-4f15-8b09-2f4d817b9667","phone":"+14783092224","providerMessageSid":"textbee:6a4113c377015dcde175cc12"}
2026-06-28T12:50:46.391Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T12:50:46.486Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T12:50:46.489Z LOG Recover Missed Call running on port 3000
2026-06-28T12:50:46.489Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T12:50:46.489Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T12:54:18.849Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T12:54:18.851Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Ralph Mango, 123 Main St, Ann Arbor MI, need help with moles in the yard, this w","providerMessageSid":"textbee:6a41197b77015dcde1772600"}
2026-06-28T12:54:18.866Z LOG [Inbound SMS linked to lead] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T12:54:18.930Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","messageId":"36dd7db7-4f65-4fd0-8077-b6d4e01cc4c2","messageProviderSid":"textbee:6a41197b77015dcde1772600","mode":"webhook_fast_save"}
2026-06-28T12:54:18.946Z LOG [SMS cost guard disabled for testing] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T12:55:22.416Z LOG [Customer SMS reply attempt] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","messageLength":101}
2026-06-28T12:55:22.418Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":101}
2026-06-28T12:55:22.703Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4119bb77015dcde17733e5","recipientCount":1}}}
2026-06-28T12:55:22.703Z LOG [Customer SMS reply sent] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4119bb77015dcde17733e5\",\"recipientCount\":1}}"}
2026-06-28T12:55:22.719Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We assist with pest control requests. What pest issue are you dealing with today?"}
2026-06-28T12:55:22.727Z LOG [Owner alert check] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"urgencyPresent":true,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-28T12:55:22.729Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-28T12:55:22.729Z LOG [SMS webhook async AI continuation completed] {"leadId":"e0a0facc-8878-456e-8188-ad337cdcb918","phone":"+14783092224","providerMessageSid":"textbee:6a41197b77015dcde1772600"}
2026-06-28T12:56:03.130Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347284444","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:XJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ","callLegId":"b7bf3444-72f0-11f1-84a4-3ed83617d29d","callSessionId":"b7bf2db4-72f0-11f1-9319-3ed83617d29d","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-28T12:56:03.163Z LOG [Voice routing decision] {"from":"+17347284444","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-28T12:56:03.366Z LOG [Telnyx voice command ok: answer]
2026-06-28T12:56:03.367Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T12:56:03.368Z LOG [Missed-call recovery triggered] {"key":"b7bf2db4-72f0-11f1-9319-3ed83617d29d:any_recovery","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T12:56:03.387Z LOG [Missed-call SMS delay started] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-28T12:56:03.545Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:XJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ","callLegId":"b7bf3444-72f0-11f1-84a4-3ed83617d29d","callSessionId":"b7bf2db4-72f0-11f1-9319-3ed83617d29d","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","sip_headers","start_time","to"]}
2026-06-28T12:56:03.554Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T12:56:03.554Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T12:56:03.555Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b7bf2db4-72f0-11f1-9319-3ed83617d29d:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T12:56:03.641Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-28T12:56:04.047Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:XJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ","callLegId":"b7bf3444-72f0-11f1-84a4-3ed83617d29d","callSessionId":"b7bf2db4-72f0-11f1-9319-3ed83617d29d","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-28T12:56:04.057Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T12:56:04.058Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T12:56:04.058Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b7bf2db4-72f0-11f1-9319-3ed83617d29d:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T12:56:04.059Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T12:56:10.395Z LOG [Missed-call recovery SMS attempt] {"leadId":"26915b80-8c0c-4a82-b14d-6ed84f936bad","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-28T12:56:10.396Z LOG [TextBee SMS attempt] {"to":"+17347284444","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-28T12:56:11.011Z LOG [TextBee SMS accepted] {"to":"+17347284444","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4119eb77015dcde177411a","recipientCount":1}}}
2026-06-28T12:56:11.018Z LOG [Missed-call recovery SMS sent] {"leadId":"26915b80-8c0c-4a82-b14d-6ed84f936bad","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4119eb77015dcde177411a\",\"recipientCount\":1}}"}
2026-06-28T12:56:11.033Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"26915b80-8c0c-4a82-b14d-6ed84f936bad","phone":"+17347284444","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-28T12:56:13.099Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:XJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ","callLegId":"b7bf3444-72f0-11f1-84a4-3ed83617d29d","callSessionId":"b7bf2db4-72f0-11f1-9319-3ed83617d29d","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-28T12:56:13.110Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T12:56:13.110Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T12:56:13.111Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b7bf2db4-72f0-11f1-9319-3ed83617d29d:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T12:56:13.121Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:XJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ","callLegId":"b7bf3444-72f0-11f1-84a4-3ed83617d29d","callSessionId":"b7bf2db4-72f0-11f1-9319-3ed83617d29d","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-28T12:56:13.129Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T12:56:13.129Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T12:56:13.129Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"b7bf2db4-72f0-11f1-9319-3ed83617d29d:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T12:56:13.129Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T12:56:13.195Z ERROR [Telnyx API error] {"path":"/calls/v3%3AXJYhRLm8PHLl2WvfNwQquDPdQjrJyV7D-Cp6hHq8WO09BB0w-cZ0nQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-28T12:56:13.196Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-28T12:56:40.811Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347284444","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:PHoIV3e3rmJW97HmynGfizfpLNuu_HKPrcJuyf5CW3LFhALJnrYrJw","callLegId":"ce0306ea-72f0-11f1-96b3-02420aef341f","callSessionId":"ce03028a-72f0-11f1-91ce-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-28T12:56:40.822Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+17347284444","to":"+17342647770"}
2026-06-28T12:57:11.760Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:mD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw","callLegId":"e106bca0-72f0-11f1-b128-02420aefde1f","callSessionId":"e106b1e2-72f0-11f1-9424-02420aefde1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-28T12:57:11.776Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-28T12:57:12.196Z LOG [Telnyx voice command ok: answer]
2026-06-28T12:57:12.196Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T12:57:12.196Z LOG [Missed-call recovery triggered] {"key":"e106b1e2-72f0-11f1-9424-02420aefde1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T12:57:12.208Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-28T12:57:12.606Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:mD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw","callLegId":"e106bca0-72f0-11f1-b128-02420aefde1f","callSessionId":"e106b1e2-72f0-11f1-9424-02420aefde1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-28T12:57:12.612Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T12:57:12.613Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T12:57:12.613Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e106b1e2-72f0-11f1-9424-02420aefde1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T12:57:12.761Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-28T12:57:13.835Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:mD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw","callLegId":"e106bca0-72f0-11f1-b128-02420aefde1f","callSessionId":"e106b1e2-72f0-11f1-9424-02420aefde1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-28T12:57:13.840Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T12:57:13.840Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T12:57:13.841Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e106b1e2-72f0-11f1-9424-02420aefde1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T12:57:13.841Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T12:57:19.217Z LOG [Missed-call recovery SMS attempt] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-28T12:57:19.217Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-28T12:57:19.423Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411a3077015dcde17750d7","recipientCount":1}}}
2026-06-28T12:57:19.427Z LOG [Missed-call recovery SMS sent] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a411a3077015dcde17750d7\",\"recipientCount\":1}}"}
2026-06-28T12:57:19.448Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-28T12:57:24.000Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"completed","hangupCause":null,"callControlId":"v3:mD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw","callLegId":"e106bca0-72f0-11f1-b128-02420aefde1f","callSessionId":"e106b1e2-72f0-11f1-9424-02420aefde1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-28T12:57:24.006Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T12:57:24.006Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T12:57:24.006Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e106b1e2-72f0-11f1-9424-02420aefde1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T12:57:24.006Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T12:57:24.241Z ERROR [Telnyx API error] {"path":"/calls/v3%3AmD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-28T12:57:24.242Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-28T12:57:24.346Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:mD29p7BaoKIFqPrK2_Uyk1yUi0pvQsGqoLy9c1IfLr-w_FqAr4B-Cw","callLegId":"e106bca0-72f0-11f1-b128-02420aefde1f","callSessionId":"e106b1e2-72f0-11f1-9424-02420aefde1f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-28T12:57:24.353Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T12:57:24.353Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T12:57:24.353Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"e106b1e2-72f0-11f1-9424-02420aefde1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T12:57:52.771Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T12:57:52.771Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Ralph Mango, 123 Main St, Ann Arbor, MI, need help with moles this week sometime","providerMessageSid":"textbee:6a411a5177015dcde17757e9"}
2026-06-28T12:57:52.776Z LOG [Inbound SMS linked to lead] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T12:57:52.867Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","messageId":"f1cf1c24-8f3b-48ca-a53a-696536c01ea5","messageProviderSid":"textbee:6a411a5177015dcde17757e9","mode":"webhook_fast_save"}
2026-06-28T12:57:52.875Z LOG [SMS cost guard disabled for testing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T12:57:54.183Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","context":"sms_intake_reply","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-28T13:05:22.415Z","bodyPreview":"Metro Pest Control: We assist with pest control requests. What pest issue are you dealing with today?"}
2026-06-28T12:57:54.185Z LOG [AI reply not treated as final owner handoff yet] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","hasRequiredLeadDetails":false,"status":"intake","qualified":0,"replyPreview":"Metro Pest Control: We assist with pest control requests. What pest issue are you dealing with today?"}
2026-06-28T12:57:54.188Z LOG [Owner alert check] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","status":"intake","qualified":0,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":false,"hasRequiredLeadDetails":false,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":false,"urgencyPresent":true,"propertyTypePresent":false,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":false}
2026-06-28T12:57:54.189Z LOG [Owner alert skipped: lead not ready yet] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","status":"intake","qualified":0,"serviceType":null,"reason":"not enough qualified details yet"}
2026-06-28T12:57:54.190Z LOG [SMS webhook async AI continuation completed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","providerMessageSid":"textbee:6a411a5177015dcde17757e9"}
2026-06-28T12:58:37.835Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:PHoIV3e3rmJW97HmynGfizfpLNuu_HKPrcJuyf5CW3LFhALJnrYrJw","callLegId":"ce0306ea-72f0-11f1-96b3-02420aef341f","callSessionId":"ce03028a-72f0-11f1-91ce-02420aef341f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-28T12:58:37.836Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-28T13:06:45.508Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T13:06:45.605Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T13:06:45.673Z LOG Recover Missed Call running on port 3000
2026-06-28T13:06:45.674Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T13:06:45.674Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T13:06:45.845Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T13:06:45.848Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Ralph Mango, 123 Main St, Ann Arbor, MI, need help with moles this week sometime","providerMessageSid":"textbee:6a411c6477015dcde1789b54"}
2026-06-28T13:06:45.915Z LOG [Inbound SMS linked to lead] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T13:06:46.396Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","messageId":"cfc27d8d-8754-417d-af3b-f2e6a07dd045","messageProviderSid":"textbee:6a411c6477015dcde1789b54","mode":"webhook_fast_save"}
2026-06-28T13:06:46.432Z LOG [SMS cost guard disabled for testing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T13:06:46.671Z LOG [Service area check] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","status":"in_area","distanceMiles":18.2,"reason":"Customer location recognized as \"Ann Arbor, MI\". Business location recognized as \"Romulus, MI\". Estimated 18.2 miles from business location, within 25 miles."}
2026-06-28T13:06:46.690Z LOG [Customer SMS reply attempt] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":77}
2026-06-28T13:06:46.691Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":77}
2026-06-28T13:06:47.197Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411c6777015dcde1789c19","recipientCount":1}}}
2026-06-28T13:06:47.197Z LOG [Customer SMS reply sent] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a411c6777015dcde1789c19\",\"recipientCount\":1}}"}
2026-06-28T13:06:47.219Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — is this a residential or commercial property?"}
2026-06-28T13:06:47.223Z LOG [SMS webhook async AI continuation completed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","providerMessageSid":"textbee:6a411c6477015dcde1789b54"}
2026-06-28T13:07:01.700Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T13:07:01.701Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a411c7677015dcde1789fe0"}
2026-06-28T13:07:01.720Z LOG [Inbound SMS linked to lead] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T13:07:01.776Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","messageId":"19ad065c-0bfb-4b35-bd1b-569737f4e912","messageProviderSid":"textbee:6a411c7677015dcde1789fe0","mode":"webhook_fast_save"}
2026-06-28T13:07:01.869Z LOG [SMS cost guard disabled for testing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T13:07:01.997Z LOG [Service area check] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","status":"in_area","distanceMiles":18.2,"reason":"Customer location recognized as \"Ann Arbor, MI\". Business location recognized as \"Romulus, MI\". Estimated 18.2 miles from business location, within 25 miles."}
2026-06-28T13:07:02.019Z LOG [Customer SMS reply attempt] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-28T13:07:02.019Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-28T13:07:02.249Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411c7777015dcde178a02d","recipientCount":1}}}
2026-06-28T13:07:02.250Z LOG [Customer SMS reply sent] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a411c7777015dcde178a02d\",\"recipientCount\":1}}"}
2026-06-28T13:07:02.327Z LOG [Owner alert check] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-28T13:07:02.398Z LOG [Owner SMS deferred by on-call routing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-29T12:00:00.000Z","deferredUntilLocal":"06-29-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-28T13:07:04.326Z LOG [Owner alert sending] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-29T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T13:07:04.837Z LOG [Owner alert email result] sent/accepted
2026-06-28T13:07:04.846Z LOG [Owner alert completed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-28T13:07:04.847Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T13:07:04.848Z LOG [SMS webhook async AI continuation completed] {"leadId":"db3c19eb-76c7-4e4d-99c6-427699b74f07","phone":"+14783092224","providerMessageSid":"textbee:6a411c7677015dcde1789fe0"}
2026-06-28T13:09:03.206Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T13:09:03.207Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms here, need help with bees by front door asap, 123 Main St, Romulus, ","providerMessageSid":"textbee:6a411cef77015dcde178c5bc"}
2026-06-28T13:09:03.276Z LOG [Inbound SMS linked to lead] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T13:09:03.292Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","messageId":"2e1ef568-9603-4be8-b667-b0cf2371d324","messageProviderSid":"textbee:6a411cef77015dcde178c5bc","mode":"webhook_fast_save"}
2026-06-28T13:09:03.315Z LOG [SMS cost guard disabled for testing] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T13:09:03.346Z LOG [Service area check] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-28T13:09:03.351Z LOG [Customer SMS reply attempt] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":226}
2026-06-28T13:09:03.352Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":226}
2026-06-28T13:09:03.752Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411cf077015dcde178c5f2","recipientCount":1}}}
2026-06-28T13:09:03.752Z LOG [Customer SMS reply sent] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a411cf077015dcde178c5f2\",\"recipientCount\":1}}"}
2026-06-28T13:09:03.759Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: If anyone is having a severe allergic reaction, trouble breathing, or is in immediate danger, call 911 now. I’ll mark this as urgent for the office. Thank you —"}
2026-06-28T13:09:03.760Z LOG [SMS webhook async AI continuation completed] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","providerMessageSid":"textbee:6a411cef77015dcde178c5bc"}
2026-06-28T13:09:20.364Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T13:09:20.365Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a411d0177015dcde178ca30"}
2026-06-28T13:09:20.372Z LOG [Inbound SMS linked to lead] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","source":"sms","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-28T13:09:20.381Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","messageId":"34f0a834-db93-47ff-bf26-811f95f33918","messageProviderSid":"textbee:6a411d0177015dcde178ca30","mode":"webhook_fast_save"}
2026-06-28T13:09:20.451Z LOG [SMS cost guard disabled for testing] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T13:09:20.460Z LOG [Service area check] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched the configured business city"}
2026-06-28T13:09:20.466Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-28T13:17:02.017Z","bodyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T13:09:20.467Z WARN [Final confirmation suppressed; retrying alternate final handoff] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_message_final","reason":"persistent_duplicate_outbound_send_lock"}
2026-06-28T13:09:20.469Z LOG [Customer SMS reply attempt] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","messageLength":86}
2026-06-28T13:09:20.469Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":86}
2026-06-28T13:09:20.710Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411d0177015dcde178ca56","recipientCount":1}}}
2026-06-28T13:09:20.710Z LOG [Customer SMS reply sent] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a411d0177015dcde178ca56\",\"recipientCount\":1}}"}
2026-06-28T13:09:20.736Z LOG [Owner alert check] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":true}
2026-06-28T13:09:22.270Z LOG [Owner alert sending] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"smsDeferred":false,"smsDeferredUntil":null,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T13:09:22.272Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Romulus,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T13:09:22.272Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":278}
2026-06-28T13:09:22.276Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+14783092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Romulus,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T13:09:22.276Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":278}
2026-06-28T13:09:22.280Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+13133141123","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Romulus,","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-28T13:09:22.280Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":278}
2026-06-28T13:09:22.811Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411d0377015dcde178cb99","recipientCount":1}}}
2026-06-28T13:09:22.812Z LOG [Owner SMS TextBee result] accepted
2026-06-28T13:09:22.812Z LOG [Owner alert qualified lead sms 1/3 result] sent/accepted
2026-06-28T13:09:22.834Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411d0377015dcde178cbbf","recipientCount":1}}}
2026-06-28T13:09:22.834Z LOG [Owner SMS TextBee result] accepted
2026-06-28T13:09:22.834Z LOG [Owner alert qualified lead sms 2/3 result] sent/accepted
2026-06-28T13:09:22.836Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a411d0377015dcde178cbc1","recipientCount":1}}}
2026-06-28T13:09:22.836Z LOG [Owner SMS TextBee result] accepted
2026-06-28T13:09:22.836Z LOG [Owner alert qualified lead sms 3/3 result] sent/accepted
2026-06-28T13:09:23.250Z LOG [Owner alert email result] sent/accepted
2026-06-28T13:09:23.259Z LOG [Owner alert completed] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","results":[{"label":"qualified lead sms 1/3","ok":true,"skipped":false},{"label":"qualified lead sms 2/3","ok":true,"skipped":false},{"label":"qualified lead sms 3/3","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-28T13:09:23.259Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T13:09:23.262Z LOG [SMS webhook async AI continuation completed] {"leadId":"325928e6-0442-47ba-855d-750bc4658d18","phone":"+14783092224","providerMessageSid":"textbee:6a411d0177015dcde178ca30"}
2026-06-28T13:18:37.902Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T13:18:37.985Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T13:18:37.986Z LOG Recover Missed Call running on port 3000
2026-06-28T13:18:37.986Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T13:18:37.987Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T13:32:36.474Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T13:32:36.491Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T13:32:36.492Z LOG Recover Missed Call running on port 3000
2026-06-28T13:32:36.493Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T13:32:36.493Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T17:29:31.083Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T17:29:31.189Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T17:29:31.198Z LOG Recover Missed Call running on port 3000
2026-06-28T17:29:31.199Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T17:29:31.199Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T17:35:53.992Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T17:35:54.082Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T17:35:54.083Z LOG Recover Missed Call running on port 3000
2026-06-28T17:35:54.083Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T17:35:54.083Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T17:38:47.277Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA","callLegId":"37946226-7318-11f1-8a53-02420aef321f","callSessionId":"37945dc6-7318-11f1-b3ea-02420aef321f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-28T17:38:47.446Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-28T17:38:47.884Z LOG [Telnyx voice command ok: answer]
2026-06-28T17:38:47.885Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:38:47.885Z LOG [Missed-call recovery triggered] {"key":"37945dc6-7318-11f1-b3ea-02420aef321f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:38:47.907Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-28T17:38:48.133Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA","callLegId":"37946226-7318-11f1-8a53-02420aef321f","callSessionId":"37945dc6-7318-11f1-b3ea-02420aef321f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-28T17:38:48.148Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:38:48.149Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:38:48.149Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"37945dc6-7318-11f1-b3ea-02420aef321f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:38:48.292Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-28T17:38:49.194Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA","callLegId":"37946226-7318-11f1-8a53-02420aef321f","callSessionId":"37945dc6-7318-11f1-b3ea-02420aef321f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-28T17:38:49.206Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:38:49.207Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:38:49.207Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"37945dc6-7318-11f1-b3ea-02420aef321f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:38:49.207Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:38:54.922Z LOG [Missed-call recovery SMS attempt] {"leadId":"e5980109-f628-42c5-84db-8209b6964771","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-28T17:38:54.922Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-28T17:38:55.230Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a415c2f77015dcde1918698","recipientCount":1}}}
2026-06-28T17:38:55.237Z LOG [Missed-call recovery SMS sent] {"leadId":"e5980109-f628-42c5-84db-8209b6964771","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a415c2f77015dcde1918698\",\"recipientCount\":1}}"}
2026-06-28T17:38:55.249Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"e5980109-f628-42c5-84db-8209b6964771","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-28T17:38:55.401Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA","callLegId":"37946226-7318-11f1-8a53-02420aef321f","callSessionId":"37945dc6-7318-11f1-b3ea-02420aef321f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-28T17:38:55.408Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:38:55.408Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:38:55.408Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"37945dc6-7318-11f1-b3ea-02420aef321f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:38:55.409Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:38:55.472Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA","callLegId":"37946226-7318-11f1-8a53-02420aef321f","callSessionId":"37945dc6-7318-11f1-b3ea-02420aef321f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-28T17:38:55.479Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:38:55.480Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:38:55.480Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"37945dc6-7318-11f1-b3ea-02420aef321f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:38:55.519Z ERROR [Telnyx API error] {"path":"/calls/v3%3A18DUHkzGA-vZ-1gbYbWYVABQRT-mnM8rzVuoRkTQHqbVk-yMhcZMrA/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-28T17:38:55.520Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-28T17:39:00.199Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:Otv1QT8GwA7Ow7IsbGO5MkjiuQiXYbqLA-6MgIpLuXJ33hn96Jt6uQ","callLegId":"3f53d348-7318-11f1-a4f6-02420aef98a0","callSessionId":"3f53c7d6-7318-11f1-be8d-02420aef98a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-28T17:39:00.205Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+14783092224","to":"+17342647770"}
2026-06-28T17:39:12.807Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:Otv1QT8GwA7Ow7IsbGO5MkjiuQiXYbqLA-6MgIpLuXJ33hn96Jt6uQ","callLegId":"3f53d348-7318-11f1-a4f6-02420aef98a0","callSessionId":"3f53c7d6-7318-11f1-be8d-02420aef98a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-28T17:39:12.807Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-28T17:41:14.302Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347284444","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:mL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw","callLegId":"8ea5c1c2-7318-11f1-ac89-02420aef311f","callSessionId":"8ea5bd26-7318-11f1-870a-02420aef311f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-28T17:41:14.330Z LOG [Voice routing decision] {"from":"+17347284444","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-28T17:41:14.615Z LOG [Telnyx voice command ok: answer]
2026-06-28T17:41:14.615Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:41:14.615Z LOG [Missed-call recovery triggered] {"key":"8ea5bd26-7318-11f1-870a-02420aef311f:any_recovery","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:41:14.633Z LOG [Missed-call SMS delay started] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-28T17:41:14.811Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:mL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw","callLegId":"8ea5c1c2-7318-11f1-ac89-02420aef311f","callSessionId":"8ea5bd26-7318-11f1-870a-02420aef311f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","sip_headers","start_time","to"]}
2026-06-28T17:41:14.821Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T17:41:14.822Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:41:14.822Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8ea5bd26-7318-11f1-870a-02420aef311f:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:41:14.989Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-28T17:41:15.500Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:mL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw","callLegId":"8ea5c1c2-7318-11f1-ac89-02420aef311f","callSessionId":"8ea5bd26-7318-11f1-870a-02420aef311f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-28T17:41:15.511Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T17:41:15.512Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:41:15.512Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8ea5bd26-7318-11f1-870a-02420aef311f:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:41:15.512Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:41:20.697Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:mL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw","callLegId":"8ea5c1c2-7318-11f1-ac89-02420aef311f","callSessionId":"8ea5bd26-7318-11f1-870a-02420aef311f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-28T17:41:20.705Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T17:41:20.706Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:41:20.706Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8ea5bd26-7318-11f1-870a-02420aef311f:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:41:20.719Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:mL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw","callLegId":"8ea5c1c2-7318-11f1-ac89-02420aef311f","callSessionId":"8ea5bd26-7318-11f1-870a-02420aef311f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-28T17:41:20.728Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+17347284444","source":"inbound_call_text_fallback"}
2026-06-28T17:41:20.728Z LOG [Missed-call recovery queued in background] {"phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:41:20.729Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"8ea5bd26-7318-11f1-870a-02420aef311f:any_recovery","phone":"+17347284444","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:41:20.729Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:41:20.846Z ERROR [Telnyx API error] {"path":"/calls/v3%3AmL00Fc3lhXn7gSZVCdeIkLAAR9gpTbRXrEJjLZrib-4cT799Se4dlw/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-28T17:41:20.847Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-28T17:41:21.645Z LOG [Missed-call recovery SMS attempt] {"leadId":"2c24b4de-1628-4cbe-a37f-17b5339c9f3e","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-28T17:41:21.646Z LOG [TextBee SMS attempt] {"to":"+17347284444","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-28T17:41:21.867Z LOG [TextBee SMS accepted] {"to":"+17347284444","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a415cc277015dcde191a766","recipientCount":1}}}
2026-06-28T17:41:21.880Z LOG [Missed-call recovery SMS sent] {"leadId":"2c24b4de-1628-4cbe-a37f-17b5339c9f3e","phone":"+17347284444","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a415cc277015dcde191a766\",\"recipientCount\":1}}"}
2026-06-28T17:41:21.895Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"2c24b4de-1628-4cbe-a37f-17b5339c9f3e","phone":"+17347284444","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-28T17:41:37.096Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347284444","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:zsOmnWWOVcGCXDskp7k1kAmrPWmrhQ_IdxAxkhgy7qw3kKrWpGagog","callLegId":"9c534a2e-7318-11f1-84c2-02420aef30a0","callSessionId":"9c534434-7318-11f1-b774-02420aef30a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-28T17:41:37.103Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+17347284444","to":"+17342647770"}
2026-06-28T17:42:28.207Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:zsOmnWWOVcGCXDskp7k1kAmrPWmrhQ_IdxAxkhgy7qw3kKrWpGagog","callLegId":"9c534a2e-7318-11f1-84c2-02420aef30a0","callSessionId":"9c534434-7318-11f1-b774-02420aef30a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-28T17:42:28.207Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-28T17:42:47.487Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+17347284444","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:lpDlnh6WDJtxMp80wJ6lyr5x2KnPtRDGNckapz8ySe40LW40qAOqlA","callLegId":"c63a0fda-7318-11f1-a3b0-e21a3082a717","callSessionId":"c63a06fc-7318-11f1-9be9-e21a3082a717","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","sip_headers","start_time","state","to","to_sip_uri"]}
2026-06-28T17:42:47.493Z LOG [Telnyx call.initiated ignored: recent forward lock] {"from":"+17347284444","to":"+17342647770"}
2026-06-28T17:43:32.452Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"originator_cancel","callControlId":"v3:lpDlnh6WDJtxMp80wJ6lyr5x2KnPtRDGNckapz8ySe40LW40qAOqlA","callLegId":"c63a0fda-7318-11f1-a3b0-e21a3082a717","callSessionId":"c63a06fc-7318-11f1-9be9-e21a3082a717","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","sip_headers","start_time","telnyx_error","to"]}
2026-06-28T17:43:32.452Z LOG [Telnyx voice event ignored: not tied to inbound customer lead] {"eventType":"call.hangup","from":"+17347284444","to":"+17342647770","direction":null,"businessPhone":"+17343092224","telnyxPhoneNumber":"+17342647770"}
2026-06-28T17:45:41.331Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:bLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A","callLegId":"2e6a0a6a-7319-11f1-88bf-02420aef201f","callSessionId":"2e6a02ae-7319-11f1-b7f2-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-28T17:45:41.343Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":false,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-28T17:45:41.779Z LOG [Telnyx voice command ok: answer]
2026-06-28T17:45:41.779Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:45:41.780Z LOG [Missed-call recovery triggered] {"key":"2e6a02ae-7319-11f1-b7f2-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-28T17:45:41.792Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-28T17:45:42.189Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:bLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A","callLegId":"2e6a0a6a-7319-11f1-88bf-02420aef201f","callSessionId":"2e6a02ae-7319-11f1-b7f2-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-28T17:45:42.203Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:45:42.204Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:45:42.204Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2e6a02ae-7319-11f1-b7f2-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-28T17:45:42.321Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-28T17:45:43.479Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:bLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A","callLegId":"2e6a0a6a-7319-11f1-88bf-02420aef201f","callSessionId":"2e6a02ae-7319-11f1-b7f2-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-28T17:45:43.486Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:45:43.487Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:45:43.487Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2e6a02ae-7319-11f1-b7f2-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-28T17:45:43.487Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:45:48.801Z LOG [Initial missed-call SMS duplicate suppressed before send] {"leadId":"e5980109-f628-42c5-84db-8209b6964771","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","duplicateWindowSeconds":600}
2026-06-28T17:45:49.777Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:bLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A","callLegId":"2e6a0a6a-7319-11f1-88bf-02420aef201f","callSessionId":"2e6a02ae-7319-11f1-b7f2-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-28T17:45:49.784Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:45:49.785Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:45:49.785Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2e6a02ae-7319-11f1-b7f2-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-28T17:45:49.785Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-28T17:45:49.789Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:bLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A","callLegId":"2e6a0a6a-7319-11f1-88bf-02420aef201f","callSessionId":"2e6a02ae-7319-11f1-b7f2-02420aef201f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-28T17:45:49.797Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-28T17:45:49.797Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:45:49.797Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"2e6a02ae-7319-11f1-b7f2-02420aef201f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-28T17:45:49.914Z ERROR [Telnyx API error] {"path":"/calls/v3%3AbLiCYTLKCBVniTbKk98UZe279wCQhqtkuNU2-CGXUnJykt0esCi18A/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-28T17:45:49.914Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-28T17:47:05.369Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-28T17:47:05.954Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a415e1a77015dcde191f4b5","recipientCount":1}}}
2026-06-28T19:15:55.817Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T19:15:55.979Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T19:15:55.980Z LOG Recover Missed Call running on port 3000
2026-06-28T19:15:55.980Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T19:15:55.981Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T19:17:09.383Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-28T19:17:09.385Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a41733677015dcde199ce8f"}
2026-06-28T19:17:09.420Z LOG [Inbound SMS linked to lead] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-28T19:17:09.645Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","messageId":"c33a922d-f4bd-4660-a500-157e2ace0ea2","messageProviderSid":"textbee:6a41733677015dcde199ce8f","mode":"webhook_fast_save"}
2026-06-28T19:17:09.670Z LOG [SMS cost guard disabled for testing] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-28T19:17:09.733Z LOG [Service area check] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-28T19:17:09.768Z LOG [Customer SMS reply attempt] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-28T19:17:09.769Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-28T19:17:12.189Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a41733877015dcde199d03b","recipientCount":1}}}
2026-06-28T19:17:12.189Z LOG [Customer SMS reply sent] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a41733877015dcde199d03b\",\"recipientCount\":1}}"}
2026-06-28T19:17:12.283Z LOG [Owner alert check] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-28T19:17:12.305Z LOG [Owner SMS deferred by on-call routing] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-29T12:00:00.000Z","deferredUntilLocal":"06-29-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-28T19:17:14.533Z LOG [Owner alert sending] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-29T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-28T19:17:14.972Z LOG [Owner alert email result] sent/accepted
2026-06-28T19:17:14.979Z LOG [Owner alert completed] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-28T19:17:14.980Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-28T19:17:14.983Z LOG [SMS webhook async AI continuation completed] {"leadId":"9251f1d5-e085-479a-901b-5159ac752d0c","phone":"+14783092224","providerMessageSid":"textbee:6a41733677015dcde199ce8f"}
2026-06-28T19:30:25.789Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T19:30:25.884Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T19:30:25.885Z LOG Recover Missed Call running on port 3000
2026-06-28T19:30:25.886Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T19:30:25.886Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T21:22:56.377Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T21:22:56.428Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T21:22:56.473Z LOG Recover Missed Call running on port 3000
2026-06-28T21:22:56.473Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T21:22:56.473Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-28T23:24:12.378Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-28T23:24:12.479Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-28T23:24:12.480Z LOG Recover Missed Call running on port 3000
2026-06-28T23:24:12.481Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-28T23:24:12.481Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T00:07:40.289Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T00:07:40.395Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T00:07:40.397Z LOG Recover Missed Call running on port 3000
2026-06-29T00:07:40.397Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T00:07:40.398Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T00:12:04.805Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T00:12:04.881Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T00:12:04.882Z LOG Recover Missed Call running on port 3000
2026-06-29T00:12:04.883Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T00:12:04.883Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T00:23:07.701Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T00:23:07.781Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T00:23:07.782Z LOG Recover Missed Call running on port 3000
2026-06-29T00:23:07.782Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T00:23:07.782Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T00:34:32.678Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T00:34:32.697Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T00:34:32.773Z LOG Recover Missed Call running on port 3000
2026-06-29T00:34:32.774Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T00:34:32.774Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T00:44:11.283Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T00:44:11.303Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T00:44:11.304Z LOG Recover Missed Call running on port 3000
2026-06-29T00:44:11.305Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T00:44:11.305Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T06:12:02.771Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T06:12:02.808Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a420cb377015dcde1d5f69f"}
2026-06-29T06:12:02.898Z LOG [Inbound SMS linked to lead] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T06:12:03.301Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","messageId":"fdd9dd32-26ad-4546-8e47-d868da71348f","messageProviderSid":"textbee:6a420cb377015dcde1d5f69f","mode":"webhook_fast_save"}
2026-06-29T06:12:03.334Z LOG [SMS cost guard disabled for testing] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T06:12:03.477Z LOG [Service area check] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T06:12:03.545Z LOG [Customer SMS reply attempt] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-29T06:12:03.546Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-29T06:12:04.223Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a420cb477015dcde1d5f775","recipientCount":1}}}
2026-06-29T06:12:04.224Z LOG [Customer SMS reply sent] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a420cb477015dcde1d5f775\",\"recipientCount\":1}}"}
2026-06-29T06:12:04.306Z LOG [Owner alert check] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-29T06:12:04.407Z LOG [Owner SMS deferred by on-call routing] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T06:12:06.893Z LOG [Owner alert sending] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T06:12:07.525Z LOG [Owner alert email result] sent/accepted
2026-06-29T06:12:07.543Z LOG [Owner alert completed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T06:12:07.544Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T06:12:07.546Z LOG [SMS webhook async AI continuation completed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","providerMessageSid":"textbee:6a420cb377015dcde1d5f69f"}
2026-06-29T12:45:35.104Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T12:45:35.208Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T12:45:35.209Z LOG Recover Missed Call running on port 3000
2026-06-29T12:45:35.209Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T12:45:35.209Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T12:46:58.977Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T12:46:58.980Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a42694377015dcde1fe92df"}
2026-06-29T12:46:58.994Z LOG [Inbound SMS linked to lead] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","source":"sms","archived":0,"status":"contacted","mode":"webhook_fast_save"}
2026-06-29T12:46:59.035Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","messageId":"820c1c49-7de4-424b-97f1-f914b038ee9e","messageProviderSid":"textbee:6a42694377015dcde1fe92df","mode":"webhook_fast_save"}
2026-06-29T12:46:59.073Z LOG [Inbound SMS after completed intake routed to office with customer callback reply] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","bodyPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the foundation of the house, this week sometime"}
2026-06-29T12:46:59.284Z LOG [Post-lead update mode] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","postLeadUpdateCount":1,"needsOwnerReview":1,"bodyPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the foundation of the house, this week sometime"}
2026-06-29T12:46:59.284Z LOG [Post-lead customer ack suppressed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","reason":"webhook_only_smart_flow_no_update_ack"}
2026-06-29T12:46:59.287Z LOG [Owner lead-update alert check] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","ownerSmsRecipientsConfigured":3,"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"needsOwnerReview":1,"postLeadUpdateCount":1}
2026-06-29T12:46:59.290Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, M","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T12:46:59.291Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":280}
2026-06-29T12:46:59.303Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+14783092224","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, M","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T12:46:59.304Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":280}
2026-06-29T12:46:59.306Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+13133141123","bodyPreview":"Lead update: Metro Pest Control\nName: Chuck Simms\nPhone: +14783092224\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, M","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T12:46:59.307Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":280}
2026-06-29T12:47:01.621Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42694577015dcde1fe94a0","recipientCount":1}}}
2026-06-29T12:47:01.621Z LOG [Owner SMS TextBee result] accepted
2026-06-29T12:47:01.621Z LOG [Owner alert lead-update sms 2/3 result] sent/accepted
2026-06-29T12:47:01.632Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42694577015dcde1fe94a2","recipientCount":1}}}
2026-06-29T12:47:01.633Z LOG [Owner SMS TextBee result] accepted
2026-06-29T12:47:01.633Z LOG [Owner alert lead-update sms 3/3 result] sent/accepted
2026-06-29T12:47:01.635Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42694577015dcde1fe94a7","recipientCount":1}}}
2026-06-29T12:47:01.635Z LOG [Owner SMS TextBee result] accepted
2026-06-29T12:47:01.636Z LOG [Owner alert lead-update sms 1/3 result] sent/accepted
2026-06-29T12:47:02.191Z LOG [Owner alert lead-update email result] sent/accepted
2026-06-29T12:47:02.203Z LOG [Owner lead-update alert results] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","smsSent":true,"emailSent":true,"results":[{"label":"lead-update sms 1/3","ok":true,"skipped":false},{"label":"lead-update sms 2/3","ok":true,"skipped":false},{"label":"lead-update sms 3/3","ok":true,"skipped":false},{"label":"lead-update email","ok":true,"skipped":false}]}
2026-06-29T12:47:02.217Z LOG [Customer SMS reply attempt] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","messageLength":92}
2026-06-29T12:47:02.217Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":92}
2026-06-29T12:47:03.404Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42694777015dcde1fe9614","recipientCount":1}}}
2026-06-29T12:47:03.405Z LOG [Customer SMS reply sent] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","context":"post_completion_additional_info_reply","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42694777015dcde1fe9614\",\"recipientCount\":1}}"}
2026-06-29T12:47:03.415Z LOG [SMS webhook async AI continuation completed] {"leadId":"6f37db52-0686-46c1-a1e6-20f2ad0a2d25","phone":"+14783092224","providerMessageSid":"textbee:6a42694377015dcde1fe92df"}
2026-06-29T12:49:53.602Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:AcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg","callLegId":"06690e44-73b9-11f1-baf4-02420aef3ba0","callSessionId":"06690994-73b9-11f1-a521-02420aef3ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-29T12:49:53.634Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-29T12:49:54.113Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:AcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg","callLegId":"06690e44-73b9-11f1-baf4-02420aef3ba0","callSessionId":"06690994-73b9-11f1-a521-02420aef3ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-29T12:49:54.122Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T12:49:54.122Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T12:49:54.123Z LOG [Missed-call recovery triggered] {"key":"06690994-73b9-11f1-a521-02420aef3ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T12:49:54.135Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered","delaySeconds":7}
2026-06-29T12:49:54.142Z LOG [Telnyx voice command ok: answer]
2026-06-29T12:49:54.142Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T12:49:54.143Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"06690994-73b9-11f1-a521-02420aef3ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T12:49:54.285Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-29T12:49:55.262Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:AcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg","callLegId":"06690e44-73b9-11f1-baf4-02420aef3ba0","callSessionId":"06690994-73b9-11f1-a521-02420aef3ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-29T12:49:55.270Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T12:49:55.270Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T12:49:55.270Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"06690994-73b9-11f1-a521-02420aef3ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T12:49:55.270Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T12:50:01.146Z LOG [Missed-call recovery SMS attempt] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered","provider":"textbee"}
2026-06-29T12:50:01.146Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-29T12:50:02.269Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4269fa77015dcde1fedfa1","recipientCount":1}}}
2026-06-29T12:50:02.280Z LOG [Missed-call recovery SMS sent] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4269fa77015dcde1fedfa1\",\"recipientCount\":1}}"}
2026-06-29T12:50:02.311Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","callStatus":"text_every_inbound_call_fallback_call.answered","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-29T12:50:03.931Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:AcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg","callLegId":"06690e44-73b9-11f1-baf4-02420aef3ba0","callSessionId":"06690994-73b9-11f1-a521-02420aef3ba0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-29T12:50:03.953Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T12:50:03.953Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T12:50:03.953Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"06690994-73b9-11f1-a521-02420aef3ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T12:50:03.954Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T12:50:03.992Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:AcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg","callLegId":"06690e44-73b9-11f1-baf4-02420aef3ba0","callSessionId":"06690994-73b9-11f1-a521-02420aef3ba0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-29T12:50:04.004Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T12:50:04.005Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T12:50:04.005Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"06690994-73b9-11f1-a521-02420aef3ba0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T12:50:04.138Z ERROR [Telnyx API error] {"path":"/calls/v3%3AAcjBA33A38tAxpq5jkKuua2qVNHK-PZ2tDvpa4udoku2JZtjtDRmIg/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-29T12:50:04.139Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-29T12:50:27.706Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T12:50:27.706Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a426a1477015dcde1fee7d1"}
2026-06-29T12:50:27.713Z LOG [Inbound SMS linked to lead] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T12:50:27.747Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","messageId":"30bee5e1-ef58-4503-ac25-edd272f91a8e","messageProviderSid":"textbee:6a426a1477015dcde1fee7d1","mode":"webhook_fast_save"}
2026-06-29T12:50:27.761Z LOG [SMS cost guard disabled for testing] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T12:50:27.830Z LOG [Service area check] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T12:50:27.867Z LOG [Customer SMS reply attempt] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-29T12:50:27.868Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-29T12:50:28.219Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a426a1477015dcde1fee812","recipientCount":1}}}
2026-06-29T12:50:28.219Z LOG [Customer SMS reply sent] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a426a1477015dcde1fee812\",\"recipientCount\":1}}"}
2026-06-29T12:50:28.252Z LOG [Owner alert check] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-29T12:50:28.268Z LOG [Owner SMS deferred by on-call routing] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T12:50:30.851Z LOG [Owner alert sending] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T12:50:31.404Z LOG [Owner alert email result] sent/accepted
2026-06-29T12:50:31.413Z LOG [Owner alert completed] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T12:50:31.415Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T12:50:31.417Z LOG [SMS webhook async AI continuation completed] {"leadId":"ce3e98fe-0457-4c69-814c-5fa30dd596f0","phone":"+14783092224","providerMessageSid":"textbee:6a426a1477015dcde1fee7d1"}
2026-06-29T12:53:34.618Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T12:53:34.698Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T12:53:34.700Z LOG Recover Missed Call running on port 3000
2026-06-29T12:53:34.700Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T12:53:34.700Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T12:55:40.909Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T12:55:40.922Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T12:55:40.923Z LOG Recover Missed Call running on port 3000
2026-06-29T12:55:40.923Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T12:55:40.923Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T12:56:09.720Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T12:56:09.723Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a426b6877015dcde1ff6633"}
2026-06-29T12:56:09.757Z LOG [Inbound SMS linked to lead] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T12:56:09.858Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","messageId":"46fb21e9-0004-4ef6-8352-d55cd228fc66","messageProviderSid":"textbee:6a426b6877015dcde1ff6633","mode":"webhook_fast_save"}
2026-06-29T12:56:09.871Z LOG [SMS cost guard disabled for testing] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T12:56:09.926Z LOG [Service area check] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T12:56:09.960Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:00:27.866Z","bodyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T12:56:09.963Z WARN [Final confirmation suppressed; retrying alternate final handoff] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","context":"detailed_lead_message_final","reason":"persistent_duplicate_outbound_send_lock"}
2026-06-29T12:56:09.966Z LOG [Customer SMS reply attempt] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","messageLength":86}
2026-06-29T12:56:09.967Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":86}
2026-06-29T12:56:11.770Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a426b6c77015dcde1ff6867","recipientCount":1}}}
2026-06-29T12:56:11.770Z LOG [Customer SMS reply sent] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a426b6c77015dcde1ff6867\",\"recipientCount\":1}}"}
2026-06-29T12:56:11.808Z LOG [Owner alert check] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":true}
2026-06-29T12:56:11.832Z LOG [Owner SMS deferred by on-call routing] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T12:56:13.091Z LOG [Owner alert sending] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T12:56:13.506Z LOG [Owner alert email result] sent/accepted
2026-06-29T12:56:13.512Z LOG [Owner alert completed] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T12:56:13.513Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T12:56:13.514Z LOG [SMS webhook async AI continuation completed] {"leadId":"ccaeabf8-0a58-48ca-af6e-1bd5612c7604","phone":"+14783092224","providerMessageSid":"textbee:6a426b6877015dcde1ff6633"}
2026-06-29T13:34:44.328Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:DJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ","callLegId":"4a55ba34-73bf-11f1-a834-02420aef8e1f","callSessionId":"4a55af4e-73bf-11f1-b5af-02420aef8e1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-29T13:34:44.361Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-29T13:34:44.521Z LOG [Telnyx voice command ok: answer]
2026-06-29T13:34:44.522Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T13:34:44.522Z LOG [Missed-call recovery triggered] {"key":"4a55af4e-73bf-11f1-b5af-02420aef8e1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T13:34:44.536Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-29T13:34:44.619Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:DJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ","callLegId":"4a55ba34-73bf-11f1-a834-02420aef8e1f","callSessionId":"4a55af4e-73bf-11f1-b5af-02420aef8e1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-29T13:34:44.629Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T13:34:44.630Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T13:34:44.630Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4a55af4e-73bf-11f1-b5af-02420aef8e1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T13:34:44.706Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-29T13:34:45.025Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:DJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ","callLegId":"4a55ba34-73bf-11f1-a834-02420aef8e1f","callSessionId":"4a55af4e-73bf-11f1-b5af-02420aef8e1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-29T13:34:45.030Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T13:34:45.031Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T13:34:45.031Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4a55af4e-73bf-11f1-b5af-02420aef8e1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T13:34:45.031Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T13:34:47.700Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:DJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ","callLegId":"4a55ba34-73bf-11f1-a834-02420aef8e1f","callSessionId":"4a55af4e-73bf-11f1-b5af-02420aef8e1f","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-29T13:34:47.710Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T13:34:47.710Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T13:34:47.710Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4a55af4e-73bf-11f1-b5af-02420aef8e1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T13:34:47.710Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T13:34:47.718Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:DJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ","callLegId":"4a55ba34-73bf-11f1-a834-02420aef8e1f","callSessionId":"4a55af4e-73bf-11f1-b5af-02420aef8e1f","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-29T13:34:47.726Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T13:34:47.726Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T13:34:47.726Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"4a55af4e-73bf-11f1-b5af-02420aef8e1f:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T13:34:47.776Z ERROR [Telnyx API error] {"path":"/calls/v3%3ADJOPYe_rx2HZjXL7tbo6wHXMlTuKT-75APDF8q42WD7I6PC4DWfDaQ/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-29T13:34:47.777Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-29T13:34:51.546Z LOG [Missed-call recovery SMS attempt] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-29T13:34:51.547Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-29T13:34:52.438Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42747d77015dcde10416a1","recipientCount":1}}}
2026-06-29T13:34:52.445Z LOG [Missed-call recovery SMS sent] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42747d77015dcde10416a1\",\"recipientCount\":1}}"}
2026-06-29T13:34:52.457Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-29T13:35:08.008Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T13:35:08.008Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a42748c77015dcde1041c64"}
2026-06-29T13:35:08.018Z LOG [Inbound SMS linked to lead] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T13:35:08.056Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","messageId":"dd26e714-d090-48e2-a795-44fee928fc48","messageProviderSid":"textbee:6a42748c77015dcde1041c64","mode":"webhook_fast_save"}
2026-06-29T13:35:08.071Z LOG [SMS cost guard disabled for testing] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T13:35:08.136Z LOG [Service area check] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T13:35:08.165Z LOG [Customer SMS reply attempt] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-29T13:35:08.165Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-29T13:35:09.103Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42748d77015dcde1041d7f","recipientCount":1}}}
2026-06-29T13:35:09.103Z LOG [Customer SMS reply sent] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42748d77015dcde1041d7f\",\"recipientCount\":1}}"}
2026-06-29T13:35:09.134Z LOG [Owner alert check] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-29T13:35:09.195Z LOG [Owner SMS deferred by on-call routing] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T13:35:11.719Z LOG [Owner alert sending] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T13:35:12.465Z LOG [Owner alert email result] sent/accepted
2026-06-29T13:35:12.478Z LOG [Owner alert completed] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T13:35:12.478Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:35:12.480Z LOG [SMS webhook async AI continuation completed] {"leadId":"c63f46a7-5f14-4e0f-a420-078968a9d83e","phone":"+14783092224","providerMessageSid":"textbee:6a42748c77015dcde1041c64"}
2026-06-29T13:41:38.409Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T13:41:38.422Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T13:41:38.423Z LOG Recover Missed Call running on port 3000
2026-06-29T13:41:38.424Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T13:41:38.424Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T13:41:42.339Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T13:41:42.342Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a42761777015dcde104a55b"}
2026-06-29T13:41:42.414Z LOG [Inbound SMS linked to lead] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T13:41:42.546Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","messageId":"848901a7-dfff-49b1-8d02-8caa03725768","messageProviderSid":"textbee:6a42761777015dcde104a55b","mode":"webhook_fast_save"}
2026-06-29T13:41:42.566Z LOG [SMS cost guard disabled for testing] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T13:41:42.621Z LOG [Service area check] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T13:41:42.654Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:45:08.163Z","bodyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:41:42.656Z WARN [Final confirmation suppressed; retrying alternate final handoff] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","context":"detailed_lead_message_final","reason":"persistent_duplicate_outbound_send_lock"}
2026-06-29T13:41:42.658Z LOG [Customer SMS reply attempt] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","messageLength":86}
2026-06-29T13:41:42.659Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":86}
2026-06-29T13:41:42.931Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42761777015dcde104a582","recipientCount":1}}}
2026-06-29T13:41:42.933Z LOG [Customer SMS reply sent] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42761777015dcde104a582\",\"recipientCount\":1}}"}
2026-06-29T13:41:43.026Z LOG [Owner alert check] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":true}
2026-06-29T13:41:43.106Z LOG [Owner SMS deferred by on-call routing] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T13:41:44.658Z LOG [Owner alert sending] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T13:41:45.040Z LOG [Owner alert email result] sent/accepted
2026-06-29T13:41:45.053Z LOG [Owner alert completed] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T13:41:45.053Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:41:45.055Z LOG [SMS webhook async AI continuation completed] {"leadId":"3e7d60df-190e-4d4e-b8bd-cf435105af3b","phone":"+14783092224","providerMessageSid":"textbee:6a42761777015dcde104a55b"}
2026-06-29T13:42:52.447Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T13:42:52.447Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a42765d77015dcde104c2e8"}
2026-06-29T13:42:52.465Z LOG [Inbound SMS linked to lead] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T13:42:52.496Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","messageId":"01c66709-645b-458f-acf2-f1ddd0108f90","messageProviderSid":"textbee:6a42765d77015dcde104c2e8","mode":"webhook_fast_save"}
2026-06-29T13:42:52.509Z LOG [SMS cost guard disabled for testing] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T13:42:52.552Z LOG [Service area check] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T13:42:52.585Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:45:08.163Z","bodyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:42:52.586Z WARN [Final confirmation suppressed; retrying alternate final handoff] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","context":"detailed_lead_message_final","reason":"persistent_duplicate_outbound_send_lock"}
2026-06-29T13:42:52.588Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:51:42.657Z","bodyPreview":"Metro Pest Control: Thank you — the office has the details and will follow up shortly."}
2026-06-29T13:42:52.616Z LOG [Owner alert check] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":true}
2026-06-29T13:42:52.627Z LOG [Owner SMS deferred by on-call routing] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T13:42:53.672Z LOG [Owner alert sending] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T13:42:54.028Z LOG [Owner alert email result] sent/accepted
2026-06-29T13:42:54.036Z LOG [Owner alert completed] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T13:42:54.037Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:42:54.038Z LOG [SMS webhook async AI continuation completed] {"leadId":"c1e93204-59ff-4e1b-a935-22b825a048d7","phone":"+14783092224","providerMessageSid":"textbee:6a42765d77015dcde104c2e8"}
2026-06-29T13:43:57.283Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T13:43:57.283Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a42769d77015dcde104db43"}
2026-06-29T13:43:57.297Z LOG [Inbound SMS linked to lead] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T13:43:57.325Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","messageId":"9a2cb5fe-4991-49c3-a30e-866228ffb06b","messageProviderSid":"textbee:6a42769d77015dcde104db43","mode":"webhook_fast_save"}
2026-06-29T13:43:57.335Z LOG [SMS cost guard disabled for testing] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T13:43:57.400Z LOG [Service area check] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T13:43:57.417Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:45:08.163Z","bodyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:43:57.418Z WARN [Final confirmation suppressed; retrying alternate final handoff] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","context":"detailed_lead_message_final","reason":"persistent_duplicate_outbound_send_lock"}
2026-06-29T13:43:57.419Z LOG [Customer SMS reply skipped: persistent duplicate send lock] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","context":"detailed_lead_message_final_alternate_final","provider":"textbee","reason":"lock_exists","expiresAt":"2026-06-29T13:51:42.657Z","bodyPreview":"Metro Pest Control: Thank you — the office has the details and will follow up shortly."}
2026-06-29T13:43:57.459Z LOG [Owner alert check] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":false,"conversationCompleteField":true}
2026-06-29T13:43:57.469Z LOG [Owner SMS deferred by on-call routing] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","urgency":"This Week","deferredUntil":"2026-06-30T12:00:00.000Z","deferredUntilLocal":"06-30-2026 8:00 AM EDT","recipients":["+17343092224","+14783092224","+13133141123"]}
2026-06-29T13:43:58.747Z LOG [Owner alert sending] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":false,"smsDeferred":true,"smsDeferredUntil":"2026-06-30T12:00:00.000Z","sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T13:43:59.100Z LOG [Owner alert email result] sent/accepted
2026-06-29T13:43:59.107Z LOG [Owner alert completed] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","results":[{"label":"email","ok":true,"skipped":false}],"updates":{"owner_email_notified":1}}
2026-06-29T13:43:59.107Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":true,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:43:59.108Z LOG [SMS webhook async AI continuation completed] {"leadId":"ca492a80-3140-4cfd-a2c1-98e793f83cc4","phone":"+14783092224","providerMessageSid":"textbee:6a42769d77015dcde104db43"}
2026-06-29T13:45:28.945Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T13:45:28.945Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 33536 Unicorn Ct, Westland, MI 48186, we have ants around the found","providerMessageSid":"textbee:6a4276f977015dcde104f73c"}
2026-06-29T13:45:28.964Z LOG [Inbound SMS linked to lead] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","source":"sms","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T13:45:28.980Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","messageId":"08005b2d-c953-4abd-9ff2-3f2f0e58c6a1","messageProviderSid":"textbee:6a4276f977015dcde104f73c","mode":"webhook_fast_save"}
2026-06-29T13:45:28.986Z LOG [SMS cost guard disabled for testing] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T13:45:29.012Z LOG [Service area check] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","status":"in_area","distanceMiles":null,"reason":"customer address matched a configured service area"}
2026-06-29T13:45:29.016Z LOG [Customer SMS reply attempt] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-29T13:45:29.017Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-29T13:45:29.294Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4276fa77015dcde104f764","recipientCount":1}}}
2026-06-29T13:45:29.294Z LOG [Customer SMS reply sent] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4276fa77015dcde104f764\",\"recipientCount\":1}}"}
2026-06-29T13:45:29.314Z LOG [Owner alert check] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-29T13:45:30.964Z LOG [Owner alert sending] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"smsDeferred":false,"smsDeferredUntil":null,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T13:45:30.966Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, MI 48","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T13:45:30.967Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":252}
2026-06-29T13:45:30.970Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+14783092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, MI 48","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T13:45:30.971Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":252}
2026-06-29T13:45:30.973Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+13133141123","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Ants\nAddress: 33536 Unicorn Ct, Westland, MI 48","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T13:45:30.974Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":252}
2026-06-29T13:45:31.735Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4276fc77015dcde104f8a1","recipientCount":1}}}
2026-06-29T13:45:31.735Z LOG [Owner SMS TextBee result] accepted
2026-06-29T13:45:31.735Z LOG [Owner alert qualified lead sms 1/3 result] sent/accepted
2026-06-29T13:45:31.866Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4276fc77015dcde104f8e2","recipientCount":1}}}
2026-06-29T13:45:31.866Z LOG [Owner SMS TextBee result] accepted
2026-06-29T13:45:31.867Z LOG [Owner alert qualified lead sms 3/3 result] sent/accepted
2026-06-29T13:45:31.871Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4276fc77015dcde104f8ee","recipientCount":1}}}
2026-06-29T13:45:31.872Z LOG [Owner SMS TextBee result] accepted
2026-06-29T13:45:31.872Z LOG [Owner alert qualified lead sms 2/3 result] sent/accepted
2026-06-29T13:45:32.328Z LOG [Owner alert email result] sent/accepted
2026-06-29T13:45:32.334Z LOG [Owner alert completed] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","results":[{"label":"qualified lead sms 1/3","ok":true,"skipped":false},{"label":"qualified lead sms 2/3","ok":true,"skipped":false},{"label":"qualified lead sms 3/3","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-29T13:45:32.334Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T13:45:32.335Z LOG [SMS webhook async AI continuation completed] {"leadId":"f2d9aa01-65cb-4d53-b4b0-819d35b348d6","phone":"+14783092224","providerMessageSid":"textbee:6a4276f977015dcde104f73c"}
2026-06-29T14:42:27.999Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T14:42:28.048Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T14:42:28.050Z LOG Recover Missed Call running on port 3000
2026-06-29T14:42:28.050Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T14:42:28.050Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T14:44:24.060Z LOG [Telnyx voice event] {"eventType":"call.initiated","from":"+14783092224","to":"+17342647770","direction":"incoming","result":null,"decodedClientState":null,"callStatus":"parked","hangupCause":null,"callControlId":"v3:unOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g","callLegId":"0559bd7c-73c9-11f1-88a9-02420aef37a0","callSessionId":"0559b99e-73c9-11f1-8be4-02420aef37a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","caller_id_name","calling_party_type","client_state","connection_codecs","connection_id","direction","from","from_sip_uri","offered_codecs","start_time","state","to","to_sip_uri"]}
2026-06-29T14:44:24.185Z LOG [Voice routing decision] {"from":"+14783092224","to":"+17342647770","afterHoursMode":"instant_text_only","businessOpenNow":true,"useInstantText":true,"textEveryInboundCall":true,"validSmsCandidate":true,"reason":"instant_text_only","businessPhoneConfigured":true}
2026-06-29T14:44:24.668Z LOG [Telnyx voice command ok: answer]
2026-06-29T14:44:24.668Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T14:44:24.669Z LOG [Missed-call recovery triggered] {"key":"0559b99e-73c9-11f1-8be4-02420aef37a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call"}
2026-06-29T14:44:24.714Z LOG [Missed-call SMS delay started] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","delaySeconds":7}
2026-06-29T14:44:25.002Z LOG [Telnyx voice event] {"eventType":"call.answered","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.answered","hangupCause":null,"callControlId":"v3:unOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g","callLegId":"0559bd7c-73c9-11f1-88a9-02420aef37a0","callSessionId":"0559b99e-73c9-11f1-8be4-02420aef37a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","codec","connection_id","from","sampling_rate","start_time","to"]}
2026-06-29T14:44:25.020Z LOG [Text every inbound call fallback check] {"eventType":"call.answered","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T14:44:25.020Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T14:44:25.020Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0559b99e-73c9-11f1-8be4-02420aef37a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.answered"}
2026-06-29T14:44:25.166Z LOG [Telnyx voice command ok: after_hours_voice_message]
2026-06-29T14:44:25.850Z LOG [Telnyx voice event] {"eventType":"call.speak.started","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.speak.started","hangupCause":null,"callControlId":"v3:unOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g","callLegId":"0559bd7c-73c9-11f1-88a9-02420aef37a0","callSessionId":"0559b99e-73c9-11f1-8be4-02420aef37a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id"]}
2026-06-29T14:44:25.865Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.started","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T14:44:25.866Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T14:44:25.871Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0559b99e-73c9-11f1-8be4-02420aef37a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.started"}
2026-06-29T14:44:25.871Z LOG [Telnyx speak event] {"eventType":"call.speak.started","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T14:44:27.741Z LOG [Telnyx voice event] {"eventType":"call.hangup","from":"+14783092224","to":"+17342647770","direction":null,"result":null,"decodedClientState":null,"callStatus":"call.hangup","hangupCause":"normal_clearing","callControlId":"v3:unOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g","callLegId":"0559bd7c-73c9-11f1-88a9-02420aef37a0","callSessionId":"0559b99e-73c9-11f1-8be4-02420aef37a0","payloadKeys":["call_control_id","call_leg_id","call_quality_stats","call_session_id","calling_party_type","client_state","connection_id","end_time","from","hangup_cause","hangup_source","sip_hangup_cause","start_time","telnyx_error","to"]}
2026-06-29T14:44:27.762Z LOG [Text every inbound call fallback check] {"eventType":"call.hangup","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T14:44:27.762Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T14:44:27.762Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0559b99e-73c9-11f1-8be4-02420aef37a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.hangup"}
2026-06-29T14:44:27.894Z LOG [Telnyx voice event] {"eventType":"call.speak.ended","from":"","to":"","direction":null,"result":null,"decodedClientState":null,"callStatus":"call_hangup","hangupCause":null,"callControlId":"v3:unOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g","callLegId":"0559bd7c-73c9-11f1-88a9-02420aef37a0","callSessionId":"0559b99e-73c9-11f1-8be4-02420aef37a0","payloadKeys":["call_control_id","call_leg_id","call_session_id","calling_party_type","client_state","connection_id","speak_id","status"]}
2026-06-29T14:44:27.904Z LOG [Text every inbound call fallback check] {"eventType":"call.speak.ended","phone":"+14783092224","source":"inbound_call_text_fallback"}
2026-06-29T14:44:27.904Z LOG [Missed-call recovery queued in background] {"phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T14:44:27.905Z LOG [Missed-call recovery skipped: already sent for this call] {"key":"0559b99e-73c9-11f1-8be4-02420aef37a0:any_recovery","phone":"+14783092224","source":"inbound_call_text","priorSource":"inbound_call_text","callStatus":"text_every_inbound_call_fallback_call.speak.ended"}
2026-06-29T14:44:27.905Z LOG [Telnyx speak event] {"eventType":"call.speak.ended","pendingTransferAfterSpeak":false,"comfortMessageStarted":false}
2026-06-29T14:44:28.021Z ERROR [Telnyx API error] {"path":"/calls/v3%3AunOG5RtiBfc9BCGbjQDM4VnX6PXUcTkV_oSpWGi9Kdn7XJYdKVxh1g/actions/hangup","status":422,"payload":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}}
2026-06-29T14:44:28.022Z ERROR [Telnyx voice command failed: hangup_after_hours_message] This call is no longer active and can't receive commands.
2026-06-29T14:44:31.724Z LOG [Missed-call recovery SMS attempt] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","provider":"textbee"}
2026-06-29T14:44:31.725Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":171}
2026-06-29T14:44:32.107Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a4284d077015dcde10bc8b0","recipientCount":1}}}
2026-06-29T14:44:32.114Z LOG [Missed-call recovery SMS sent] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","source":"inbound_call_text","callStatus":"text_every_inbound_call","sent":true,"provider":"textbee","result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a4284d077015dcde10bc8b0\",\"recipientCount\":1}}"}
2026-06-29T14:44:32.126Z LOG [Missed-call owner alert skipped: missed-call owner alerts disabled] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","callStatus":"text_every_inbound_call","ownerMissedCallSmsEnabled":false,"ownerMissedCallEmailEnabled":false}
2026-06-29T14:45:45.688Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T14:45:45.692Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"Chuck Simms, 123 Main St, Ann Arbor, MI - have bees around the roofing building ","providerMessageSid":"textbee:6a42851a77015dcde10beb4f"}
2026-06-29T14:45:45.705Z LOG [Inbound SMS linked to lead] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"new","mode":"webhook_fast_save"}
2026-06-29T14:45:45.769Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","messageId":"b2bce8d5-2d05-47dc-92b6-fa43d35b1995","messageProviderSid":"textbee:6a42851a77015dcde10beb4f","mode":"webhook_fast_save"}
2026-06-29T14:45:45.835Z LOG [SMS cost guard disabled for testing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T14:45:45.918Z LOG [Service area check] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","status":"in_area","distanceMiles":18.2,"reason":"Customer location recognized as \"Ann Arbor, MI\". Business location recognized as \"Romulus, MI\". Estimated 18.2 miles from business location, within 25 miles."}
2026-06-29T14:45:45.971Z LOG [Customer SMS reply attempt] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":77}
2026-06-29T14:45:45.972Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":77}
2026-06-29T14:45:46.264Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42851b77015dcde10beb8c","recipientCount":1}}}
2026-06-29T14:45:46.265Z LOG [Customer SMS reply sent] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42851b77015dcde10beb8c\",\"recipientCount\":1}}"}
2026-06-29T14:45:46.275Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":false,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — is this a residential or commercial property?"}
2026-06-29T14:45:46.277Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","providerMessageSid":"textbee:6a42851a77015dcde10beb4f"}
2026-06-29T14:46:01.525Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T14:46:01.526Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"home","providerMessageSid":"textbee:6a42852a77015dcde10bf21e"}
2026-06-29T14:46:01.534Z LOG [Inbound SMS linked to lead] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-29T14:46:01.556Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","messageId":"c8cbb1b5-eacf-44c1-ab75-939cb03aaab2","messageProviderSid":"textbee:6a42852a77015dcde10bf21e","mode":"webhook_fast_save"}
2026-06-29T14:46:01.594Z LOG [SMS cost guard disabled for testing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T14:46:01.638Z LOG [Service area check] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","status":"in_area","distanceMiles":18.2,"reason":"Customer location recognized as \"Ann Arbor, MI\". Business location recognized as \"Romulus, MI\". Estimated 18.2 miles from business location, within 25 miles."}
2026-06-29T14:46:01.664Z LOG [Customer SMS reply attempt] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","messageLength":153}
2026-06-29T14:46:01.665Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":153}
2026-06-29T14:46:02.294Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42852b77015dcde10bf296","recipientCount":1}}}
2026-06-29T14:46:02.295Z LOG [Customer SMS reply sent] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_continuation","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42852b77015dcde10bf296\",\"recipientCount\":1}}"}
2026-06-29T14:46:02.314Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","capturedService":true,"capturedUrgency":false,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — How urgent is this? Reply with one: Emergency / Safety Risk, Today / Same Day, This Week, Routine, Estimate / Inspection."}
2026-06-29T14:46:02.317Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","providerMessageSid":"textbee:6a42852a77015dcde10bf21e"}
2026-06-29T14:46:15.615Z LOG [SMS webhook received] {"bodyKeys":["smsId","message","deviceId","webhookSubscriptionId","webhookEvent","idempotencyKey","sender","receivedAt"],"dataKeys":[],"payloadKeys":[],"eventType":"MESSAGE_RECEIVED"}
2026-06-29T14:46:15.616Z LOG [Incoming SMS received] {"provider":"textbee","from":"+14783092224","eventType":"MESSAGE_RECEIVED","textPreview":"today","providerMessageSid":"textbee:6a42853877015dcde10bf790"}
2026-06-29T14:46:15.623Z LOG [Inbound SMS linked to lead] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","source":"inbound_call_text","archived":0,"status":"intake","mode":"webhook_fast_save"}
2026-06-29T14:46:15.644Z LOG [Incoming SMS saved to lead and no-reply follow-ups suppressed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","messageId":"fb9be022-f247-4347-b604-232536ee88f1","messageProviderSid":"textbee:6a42853877015dcde10bf790","mode":"webhook_fast_save"}
2026-06-29T14:46:15.662Z LOG [SMS cost guard disabled for testing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","smsRestrictionsEnabled":false}
2026-06-29T14:46:15.706Z LOG [Service area check] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","status":"in_area","distanceMiles":18.2,"reason":"Customer location recognized as \"Ann Arbor, MI\". Business location recognized as \"Romulus, MI\". Estimated 18.2 miles from business location, within 25 miles."}
2026-06-29T14:46:15.714Z LOG [Customer SMS reply attempt] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","messageLength":97}
2026-06-29T14:46:15.715Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":97}
2026-06-29T14:46:15.904Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42853877015dcde10bf7b8","recipientCount":1}}}
2026-06-29T14:46:15.904Z LOG [Customer SMS reply sent] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","context":"detailed_lead_message_final","provider":"textbee","attempt":1,"result":"{\"data\":{\"success\":true,\"message\":\"SMS added to queue for processing\",\"smsBatchId\":\"6a42853877015dcde10bf7b8\",\"recipientCount\":1}}"}
2026-06-29T14:46:15.992Z LOG [Owner alert check] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","status":"qualified","qualified":1,"ownerNotified":0,"ownerSmsNotified":0,"ownerEmailNotified":0,"aiFinalReplyComplete":true,"hasRequiredLeadDetails":true,"customerNamePresent":true,"serviceAddressPresent":true,"issueTypePresent":true,"urgencyPresent":true,"propertyTypePresent":true,"propertyTypeRequiredForOwnerAlert":true,"ownerSmsRecipientsConfigured":3,"ownerAlertRoutingMode":"on_call","onCallRecipients":["Owner (Owner): +17343092224","Kyle (Office): +14783092224","Keith (Tech): +13133141123"],"ownerEmailConfigured":true,"ownerAlertsEnabled":true,"ownerSmsEnabled":true,"ownerEmailEnabled":true,"emailRequiresDone":true,"configuredSmsRequiresDone":true,"smsRequiresDone":true,"smsSyncedWithEmail":true,"finalHandoffSent":true,"conversationCompleteField":true}
2026-06-29T14:46:18.405Z LOG [Owner alert sending] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","reason":"qualified flag true with required details","sendSms":true,"smsDeferred":false,"smsDeferredUntil":null,"sendEmail":true,"aiFinalReplyComplete":true}
2026-06-29T14:46:18.407Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+17343092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Ann Arbo","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T14:46:18.408Z LOG [TextBee SMS attempt] {"to":"+17343092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":266}
2026-06-29T14:46:18.410Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+14783092224","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Ann Arbo","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T14:46:18.410Z LOG [TextBee SMS attempt] {"to":"+14783092224","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":266}
2026-06-29T14:46:18.414Z LOG [Owner SMS send attempt] {"provider":"textbee","to":"+13133141123","bodyPreview":"New qualified lead: Metro Pest Control\n\nChuck Simms\n+14783092224\n\nIssue: Stinging Insects\nAddress: 123 Main St, Ann Arbo","ownerSmsProvider":"textbee","smsProvider":"textbee"}
2026-06-29T14:46:18.414Z LOG [TextBee SMS attempt] {"to":"+13133141123","textbeePhoneNumber":"+17346584347","deviceId":"6a32e39ed2404ce643e69420","simSubscriptionId":7,"messageLength":266}
2026-06-29T14:46:18.932Z LOG [TextBee SMS accepted] {"to":"+14783092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42853b77015dcde10bf964","recipientCount":1}}}
2026-06-29T14:46:18.932Z LOG [Owner SMS TextBee result] accepted
2026-06-29T14:46:18.932Z LOG [Owner alert qualified lead sms 2/3 result] sent/accepted
2026-06-29T14:46:18.940Z LOG [TextBee SMS accepted] {"to":"+13133141123","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42853b77015dcde10bf966","recipientCount":1}}}
2026-06-29T14:46:18.940Z LOG [Owner SMS TextBee result] accepted
2026-06-29T14:46:18.940Z LOG [Owner alert qualified lead sms 3/3 result] sent/accepted
2026-06-29T14:46:18.946Z LOG [TextBee SMS accepted] {"to":"+17343092224","status":201,"data":{"data":{"success":true,"message":"SMS added to queue for processing","smsBatchId":"6a42853b77015dcde10bf968","recipientCount":1}}}
2026-06-29T14:46:18.946Z LOG [Owner SMS TextBee result] accepted
2026-06-29T14:46:18.946Z LOG [Owner alert qualified lead sms 1/3 result] sent/accepted
2026-06-29T14:46:19.442Z LOG [Owner alert email result] sent/accepted
2026-06-29T14:46:19.451Z LOG [Owner alert completed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","results":[{"label":"qualified lead sms 1/3","ok":true,"skipped":false},{"label":"qualified lead sms 2/3","ok":true,"skipped":false},{"label":"qualified lead sms 3/3","ok":true,"skipped":false},{"label":"email","ok":true,"skipped":false}],"updates":{"owner_sms_notified":1,"owner_email_notified":1,"owner_notified":1}}
2026-06-29T14:46:19.452Z LOG [Detailed lead message handled before business knowledge routing] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","capturedService":true,"capturedUrgency":true,"capturedName":true,"capturedAddress":true,"capturedProperty":true,"capturedPreferredTime":false,"outOfArea":false,"sent":true,"replyPreview":"Metro Pest Control: Thank you — I have the details. The office will review and follow up shortly."}
2026-06-29T14:46:19.454Z LOG [SMS webhook async AI continuation completed] {"leadId":"2bb452f4-21bc-486f-863d-08d53bc33f15","phone":"+14783092224","providerMessageSid":"textbee:6a42853877015dcde10bf790"}
2026-06-29T14:55:28.814Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T14:55:28.828Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T14:55:28.898Z LOG Recover Missed Call running on port 3000
2026-06-29T14:55:28.898Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T14:55:28.898Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T17:46:00.512Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T17:46:00.620Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T17:46:00.621Z LOG Recover Missed Call running on port 3000
2026-06-29T17:46:00.622Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T17:46:00.622Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
2026-06-29T23:44:08.114Z LOG [File logger installed] {"path":"/home/recoverm/demo.recovermissedcall.com/app.log"}
2026-06-29T23:44:08.210Z LOG [TextBee inbound polling disabled: webhook-only build]
2026-06-29T23:44:08.211Z LOG Recover Missed Call running on port 3000
2026-06-29T23:44:08.211Z LOG Admin dashboard: https://demo.recovermissedcall.com/admin
2026-06-29T23:44:08.211Z LOG SMS terms: https://demo.recovermissedcall.com/sms-terms
