npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@taskmagic/apps-clicksend

v0.4.1

Published

SMS, MMS and text-to-speech voice messaging with [ClickSend](https://www.clicksend.com) — API docs: https://developers.clicksend.com/docs

Downloads

886

Readme

ClickSend

SMS, MMS and text-to-speech voice messaging with ClickSend — API docs: https://developers.clicksend.com/docs

The API is REST under https://rest.clicksend.com, every path versioned as /v3/..., and authenticated with HTTP Basic where your account username is the user and the API key is the password.

  • Actions: Send SMS, Send MMS, Send Voice Message, Get SMS Price, List Inbound SMS, List Delivery Receipts, List SMS History, Get Account Details.
  • Triggers: New Inbound SMS (polling), New Delivery Receipt (polling).

Connection: click API Credentials in the top right of the ClickSend dashboard and copy the Username and the API Key. The API key is not your dashboard password. TaskMagic base64-encodes username:apiKey into an Authorization: Basic header on every call.

Notes

  • There is no sandbox. ClickSend runs a single production environment with no test key, so every Send SMS / MMS / Voice run costs real credit off the account balance. Use Get SMS Price to quote a message without sending it, and Get Account Details to read the remaining balance.
  • A 200 response does not mean the message was sent. ClickSend's docs say it outright on every send endpoint: "This parameter doesn't reflect the status of each message. Check the status parameter of the message object to view the status of the individual message." The send actions therefore inspect data.messages[].status and data.blocked_count, and fail the step when any recipient was rejected or blocked — a blocked message usually means global sending is off for that country, or the Sender ID is not registered there. If you would rather handle partial failures in the flow, turn off Fail If Any Message Is Rejected and read failed_messages, failed_count, blocked_count and warning from the step output. ClickSend does not publish the complete list of per-message status strings, so anything outside SUCCESS / QUEUED / SCHEDULED is treated as a failure.
  • 1000 messages per call. ClickSend caps /v3/sms/send, /v3/mms/send and /v3/voice/send at 1000 recipients per request; the actions reject a longer recipient list before spending anything. Larger blasts belong in ClickSend's SMS Campaigns product.
  • Recipients must be E.164+14155550101, not 4155550101. Pass a two-letter Country only when your numbers are in a local format. Sending outside your own country also needs ClickSend's global sending feature enabled on the account.
  • MMS subjects are capped at 20 characters by ClickSend, so Send MMS rejects a longer one up front rather than letting it be silently truncated. The attachment must be a public URL under 250 kB; jpg and gif can be sent directly, while jpeg, png and bmp have to be converted through ClickSend's uploads endpoint (/v3/uploads?convert=mms) first.
  • Polling triggers, not webhooks. ClickSend does have a webhook API — inbound and delivery receipt Automations (POST /v3/automations/sms/inbound, .../delivery-receipt) — but registering one requires choosing a dedicated number and defining keyword/match rules, which is account configuration a trigger should not silently perform. Both triggers poll instead. For them to see anything you must add the matching rule in the ClickSend dashboard with its action set to POLL (or create it yourself through the Automations API); that is what makes ClickSend queue the message for retrieval. ClickSend also notes that multiple POLL rules on the same number deliver the same inbound message more than once.
  • Triggers never mark anything as read. /v3/sms/inbound-read and /v3/sms/receipts-read permanently hide rows from the list endpoints, so polling them would quietly mutate the account. The triggers dedupe on the row's unix timestamp (falling back to timestamp_send, which is the field ClickSend's own inbound-list example returns) instead.
  • List endpoints are doubly nested. Laravel-style pagination puts the rows at data.data, with total / per_page / current_page alongside them; the actions unwrap the rows and return the paginator separately under pagination. limit is 15–100.
  • No email action. ClickSend's Transactional Email product is closed to new customers — its own docs point new signups at Mailgun instead — so shipping an email action here would fail for most connections.
  • No custom API call action. A passthrough would hand this connection's API key to any URL a flow supplies, and the endpoints people actually automate are covered above.