{"id":1005,"date":"2026-09-22T09:38:38","date_gmt":"2026-09-22T09:38:38","guid":{"rendered":"https:\/\/smppcenter.com\/kb\/?p=1005"},"modified":"2026-09-22T09:38:40","modified_gmt":"2026-09-22T09:38:40","slug":"configure-message-retry-multiple-connects","status":"publish","type":"post","link":"https:\/\/smppcenter.com\/kb\/configure-message-retry-multiple-connects\/","title":{"rendered":"How to Configure Message Retry Across Up to 4 Connects"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Message Retry<\/strong> resends a failed message on a different connect, based on the error code returned by the first connect. It recovers messages automatically while traffic is flowing, before anyone has to repush manually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With the <strong>Routes Multiple Retry<\/strong> plugin (paid), a route can retry up to <strong>4 times<\/strong>, each time on a different set of connects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Where to find it<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sidebar \u2192 SMPP Client \u2192 Routes<\/strong> \u2192 Add or Edit a route \u2192 <strong>Message Retry<\/strong> section.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fields<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><strong>Message Retry<\/strong><\/td><td>Enables retry for the route<\/td><\/tr><tr><td><strong>Number of Retries<\/strong><\/td><td>How many retry levels to use (up to 4 with Routes Multiple Retry)<\/td><\/tr><tr><td><strong>Retry Error Codes<\/strong><\/td><td>The <strong>global error codes<\/strong> that trigger a retry. Only these failures are retried<\/td><\/tr><tr><td><strong>Retry Connects 1\u20134<\/strong><\/td><td>The connects used at each retry level<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A message is retried <strong>only once per retry level<\/strong>, on one of the connects selected for that level.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to pick retry error codes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Retry only failures that a different vendor has a real chance of delivering:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Good retry candidates<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vendor\/route-side failures: throttling, system errors, submission timeouts, &#8220;route not available&#8221;<\/li>\n\n\n\n<li>Vendor-specific template or sender ID rejections, when the retry connect has that template or sender ID registered<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Don&#8217;t retry<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Invalid or non-existent numbers<\/li>\n\n\n\n<li>Numbers on DND\/NCPR (for promotional traffic)<\/li>\n\n\n\n<li>Content blocked for policy or spam reasons<\/li>\n\n\n\n<li>Absent subscriber \/ handset off. Another vendor will get the same result, and you pay twice.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This is why well-designed <strong>Global Error Codes<\/strong> matter: retry decisions depend on them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example setup: India transactional<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Primary:<\/strong> Vendor A (Round Robin across 2 connects)<\/li>\n\n\n\n<li><strong>Retry Error Codes:<\/strong> vendor system error, throttled, template mismatch at vendor<\/li>\n\n\n\n<li><strong>Retry Connects 1:<\/strong> Vendor B<\/li>\n\n\n\n<li><strong>Retry Connects 2:<\/strong> Vendor C<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Costs and billing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every retry is a new submission to a vendor. If your retry connects bill on <strong>submit<\/strong>, a failed first attempt plus a retry can cost you twice for one client message. Watch margins in your billing and usage reports for the first few days after enabling retry, and keep retry lists short on connects that bill on submit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Retry vs Repush vs Multi-Channel Fallback<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool<\/th><th>When it runs<\/th><th>Use it for<\/th><\/tr><\/thead><tbody><tr><td><strong>Message Retry<\/strong><\/td><td>Automatically, on each failure<\/td><td>Ongoing vendor-level failures<\/td><\/tr><tr><td><strong>Repush Messages<\/strong><\/td><td>Manually, after an incident<\/td><td>Bulk recovery after an outage<\/td><\/tr><tr><td><strong>Multi-Channel Fallback<\/strong><\/td><td>Automatically, across channels<\/td><td>Moving to WhatsApp\/RCS when SMS fails<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Failed messages aren&#8217;t being retried:<\/strong> check that the failure&#8217;s global error code is in <strong>Retry Error Codes<\/strong>, and that the vendor&#8217;s raw code is mapped to it (unmapped codes can&#8217;t match).<\/li>\n\n\n\n<li><strong>Retry fails on the same error:<\/strong> the retry connect has the same limitation (template, sender ID, destination). Pick a connect that actually differs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Related articles<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/smppcenter.com\/kb\/global-error-codes-setup-smpp-software\/\">How to Set Up Global Error Codes<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/repush-failed-messages-different-route\/\">How to Repush Failed Messages Through a Different Route<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/create-sms-route-distribution-strategy\/\">How to Create a Route and Choose a Distribution Strategy<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/failed-messages-get-retried-smpp-client\/\">Do the Failed Messages Get Retried in SMPP Client?<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Automatically retry failed messages on backup connects, chosen by error code, so a single vendor failure doesn&#8217;t become a client complaint.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[316],"tags":[348,347,345,344,346],"class_list":["post-1005","post","type-post","status-publish","format-standard","hentry","category-routes-failover","tag-delivery-rate","tag-failover","tag-message-retry","tag-retry-error-codes","tag-routes-multiple-retry"],"_links":{"self":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/1005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/comments?post=1005"}],"version-history":[{"count":0,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/1005\/revisions"}],"wp:attachment":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/media?parent=1005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/categories?post=1005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/tags?post=1005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}