[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Find failed ClickSend texts and see why they failed

> List the texts that failed in ClickSend History, read the reason for each and find the contact behind a wrong number.

Source: https://cotlet.dev/integrations/clicksend-api-mcp-server/find-failed-sms

After a send, History shows some messages as Failed, and the reason sits behind a small (i) icon on each row.

Cotlet does it in your own ClickSend account with list\_sms\_history, get\_sms\_message, list\_contacts and remove\_contact, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=clicksend) [All ClickSend tools](https://cotlet.dev/integrations/clicksend-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can ClickSend do this on its own?

ClickSend shows Sent and Failed in History and an (i) panel per message (checked 23 Oct 2026). The official MCP server can read SMS history and statistics for the last 30 days, but it has no tool to change or remove a contact, so fixing the numbers behind the failures stays manual.

## How you do it in ClickSend today

1. Click SMS in the left menu and open History.
2. Filter Status to Failed, and narrow by date range, To or From number, contact name or subaccount.
3. Hover over a message and click the (i) icon to read why it failed, the error code, the cost, the number of parts and the message ID.
4. To work on many at once, export the filtered result to Excel; one download holds up to 50,000 records with the message body cut to 160 characters.
5. Open the contact list, find each contact and Edit the wrong number or remove the contact.
6. The list of failures changes with every send, so this repeats after each campaign.

## How to find failed ClickSend texts and see why they failed

Prompt

```
List yesterday's failed texts, say why each failed, and for wrong numbers find the contact so I can decide what to remove.
```

1. 01  
### Pull the failures  
list\_sms\_history runs with status failed and the date range you named, and follows next\_cursor until the page is older than the range. History keeps full data for four months, so a longer range stops there.
2. 02  
### Read each reason  
get\_sms\_message is called once for each failed number. The agent groups the failures by error text and code, for example a number that does not exist and a sender the destination country does not accept.
3. 03  
### Separate fixable from final  
A wrong or missing number is fixable. A block on the sender or a compliance block is not, and the agent lists those for you instead of touching any contact.
4. 04  
### Find the contact  
For fixable ones the agent calls list\_contacts with query set to the number, in the list you name, and shows the contact it found.
5. 05  
### Remove only after your OK  
remove\_contact runs only for contacts you approve, one call each. The agent never removes someone for a failure caused by the sender or the carrier.

### What you get back

Example data

```
Failed texts yesterday: 9
- 6 invalid recipient number (contacts found in Webinar leads, e.g. Lena Ortiz +447700900142)
- 3 sender not accepted in the destination country (left for you)
Removed after your OK: 0
```

### Other ways to ask

- After each campaign, list the failed texts and the reason for each, but change nothing.
- Find failed texts from the last 7 days sent from our alpha tag and show the destination countries.
- For the Webinar leads list, remove every contact whose last text failed as an invalid number, after listing them.

## What ClickSend allows, and what to know first

- ClickSend History shows two statuses, Sent and Failed; Sent means the message went to the carrier, and it can still not reach the recipient.
- The (i) icon on a message shows the reason, the error codes, the cost, the number of message parts and the unique message ID.
- ClickSend keeps full message data for four months, and support can supply archived history up to 2 years back.
- A delivery report email can be set under Account Settings > Messaging Settings > Delivery Reports Rules, and ClickSend recommends choosing only on failure.
- Many failures at once, from invalid numbers or compliance blocks, go to support@clicksend.com, which is available 24/7.

remove\_contact asks for your OK by default. To run it daily without you, switch confirmation off for that tool in your dashboard.

Sources: [ClickSend Help: Delivery notifications + reports](https://help.clicksend.com/en/articles/42317-delivery-notifications-reports) · [ClickSend Help: How to view reports](https://help.clicksend.com/en/articles/42316-how-to-view-reports) · [ClickSend Help: Exporting SMS History and Data Security](https://help.clicksend.com/en/articles/43125-exporting-sms-history-and-data-security) · [ClickSend Help: SMS Campaign](https://help.clicksend.com/en/articles/42190-sms-campaign)

## Call get\_sms\_message from a script

curl

```
curl https://cotlet.dev/api/v1/clicksend/messages/7D2F4C1E-8B3A-4F6D-9E21-5A0C7B1D3E92/sms-message \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

Example response

```
{
"message_id": "7D2F4C1E-8B3A-4F6D-9E21-5A0C7B1D3E92",
"status": "failed",
"to": "+447700900142",
"from": "+15550100188",
"sent_at": "2026-10-22 18:04",
"error_code": "INVALID_RECIPIENT",
"error_text": "Invalid recipient number",
"message_parts": 1,
"message_price": "0.00"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is clicksend\_read → get\_sms\_message. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/clicksend-api-mcp-server.md#automations)

## ClickSend tools this automation uses

__Cotlet ClickSend tools used to find failed ClickSend texts and see why they failed__
| Tool | Parameters |
| ------------------ | ------------------------------------------------------------- |
| list\_sms\_history | status, to, from, contact\_name, date\_from, date\_to, cursor |
| get\_sms\_message | message\_id |
| list\_contacts | list\_id, query, cursor |
| remove\_contact | list\_id, contact\_id |

[All 15 ClickSend tools with descriptions](https://cotlet.dev/integrations/clicksend-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect ClickSend to Cotlet?

Yes. You sign in to ClickSend yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get ClickSend once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More ClickSend automations

- [Schedule a ClickSend SMS campaign to a contact list](https://cotlet.dev/integrations/clicksend-api-mcp-server/schedule-sms-campaign.md)
- [Remove opted-out contacts from ClickSend lists](https://cotlet.dev/integrations/clicksend-api-mcp-server/remove-opted-out-contacts.md)
- [ClickSend API and MCP server: every tool](https://cotlet.dev/integrations/clicksend-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to ClickSend.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with ClickSend.

[Sign up free](https://cotlet.dev/app/signup?app=clicksend)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
