Easily connect with multiple contacts through WhatsApp, directly from your command line.

Perfect for streamlined communication, whether you’re reaching clients, team members, or friends.

🚀 Key Features

  • Quick Device Link

    Easily link and unlink your device using QR code scanning.

  • Bulk Messaging

    Send text messages, images, and documents to a list of contacts in one go.

  • Personalized Templates

    Use text templates to add a personal touch to your messages.

  • Caption Support

    Add captions to images or documents for clarity and context.

📥 Download and Install

You can install the tool in one of the following ways:

Manual Installation

  • Download the zip file, extract it to a folder of your choice, and start using the tool.
  • For convenience, you can add its path to the PATH environment variable.

Choose your platform to start using msgdrop:

Using a Package Manager

» macOS, linux » Homebrew

brew tap lucasepe/cli-tools
brew install msgdrop

⚙️ USAGE

msgdrop  <ACTION> [FLAGS]

ACTIONS

Command Description
-L Link a device by scanning a QR code.
-U Disconnect a linked device.
-M Send a text message.
-X Send a file (image, document, etc.).
--help Display help and exit.
--version Show version information and exit.

FLAGS

Flag Description
-l <file> CSV file with contacts.
-t <file> Text template message.
-f <file> File to send (image, document, etc.).
-c <string> Caption for image or document.

📚 Examples

Here are some quick examples to help you get started with msgdrop:

# Link a device (required on first use)
# Do this first before any other operation
msgdrop -L 

# Send a text message to contacts from a CSV file
msgdrop -M -l contacts.csv -t message.txt 

# Send an image with a caption to contacts
msgdrop -X -l contacts.csv -f image.jpg -c "Check this out!"

# Disconnect a device
msgdrop -U

📖 The ‘contacts.csv’ file format

Each row in the CSV contacts file is composed of four fields:

FirstName,LastName,BirthDate,MobileNumber

Example of a ‘contacts.csv’ file

Christopher,McAllister,2001-01-08,393401234567
Monica,Wilson,1999-03-16,393451234567

📝 The ‘message.txt’ template

Your message can eventually be ’templatized’ by using placeholders and functions.

Example of a (simple) ‘message.txt’ file

Hi {{ .FirstName }}!

Our new collection of luxurious pajamas 
has just arrived! 

Treat yourself to comfort and style with an 
exclusive **20% off** this Black Friday! 

Example of a (complex) ‘message.txt’ file

Hi {{ .FirstName }}! 

{{- $days := daysUntilNextBirthday .BirthDate -}}
{{ if lt $days 6 }}

In {{ $days }} days it's your birthday and 
we thought of giving you a gift! 

Here is a discount code: XXXXXX. 
{{ end -}}

Template explanation

Let’s analyze the most complex example. This template is used to create a personalized message. It makes the message special by including the person’s first name and in the second example, giving them a discount code if their birthday is within the next 6 days.

Here’s a breakdown of how it works:

  • The message starts by saying “Hi” followed by the person’s first name. The placeholder {{ .FirstName }} is used to insert the person’s first name into the message.

  • The template calculates how many days are left until the person’s next birthday. This calculation is done using the person’s birth date. The result is stored in a variable called $days.

  • The template checks if the person’s birthday is within the next 6 days. This is done using an “if” statement: {{ if lt $days 6 }}. If there are fewer than 6 days left until the birthday, the next part of the message is included.

  • If the condition is met (i.e., the birthday is within the next 6 days), the message tells the person how many days are left until their birthday and mentions that a gift is being given. The exact number of days is inserted using the placeholder {{ $daysUntilBirthday }}.

To summarize, this template personalizes a message with the recipient’s name, checks if their birthday is soon, and if it is, includes a special birthday message and a discount code. Otherwise, it simply invites the recipient to explore new items in the store.

👍 SUPPORT

All tools are completely free to use, with every feature fully unlocked and accessible.

If you find one or more of these tool helpful, please consider supporting its development with a donation.

Your contribution, no matter the amount, helps cover the time and effort dedicated to creating and maintaining these tools, ensuring they remain free and receive continuous improvements.

Every bit of support makes a meaningful difference and allows me to focus on building more tools that solve real-world challenges.

Thank you for your generosity and for being part of this journey!