<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mark816P</title>
    <description>The latest articles on DEV Community by Mark816P (@mark816p).</description>
    <link>https://dev.to/mark816p</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026176%2Fa1671f78-a9a0-49d3-a0cc-9182a761161b.png</url>
      <title>DEV Community: Mark816P</title>
      <link>https://dev.to/mark816p</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mark816p"/>
    <language>en</language>
    <item>
      <title>How to Send Free WhatsApp Messages Directly from GitHub Actions</title>
      <dc:creator>Mark816P</dc:creator>
      <pubDate>Sun, 12 Jul 2026 15:38:37 +0000</pubDate>
      <link>https://dev.to/mark816p/how-to-send-free-whatsapp-messages-directly-from-github-actions-35k</link>
      <guid>https://dev.to/mark816p/how-to-send-free-whatsapp-messages-directly-from-github-actions-35k</guid>
      <description>&lt;p&gt;Automating notifications is a great way to keep track of your CI/CD pipelines, daily scrapers, or cron jobs. But if you want to send those notifications to &lt;strong&gt;WhatsApp&lt;/strong&gt;, you usually run into a wall: the official API is paid, and third-party APIs (like Twilio or Green API) require subscriptions and trust.&lt;/p&gt;

&lt;p&gt;I wanted a solution that was &lt;strong&gt;100% free&lt;/strong&gt;, ran natively in &lt;strong&gt;GitHub Actions&lt;/strong&gt;, and didn't rely on middlemen. So, I built a workaround using Go and SQLite.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem with WhatsApp Automation
&lt;/h3&gt;

&lt;p&gt;To automate WhatsApp, you have to link a device via a QR code. GitHub Actions runs in the background—there is no screen to scan a QR code every time a workflow runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution: "Brain Transplanting" a Session
&lt;/h3&gt;

&lt;p&gt;I used the open-source Go library &lt;a href="https://github.com/tulir/whatsmeow" rel="noopener noreferrer"&gt;whatsmeow&lt;/a&gt;, which reverse-engineers the WhatsApp Web protocol.&lt;/p&gt;

&lt;p&gt;Here is how the automation works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local Authentication:&lt;/strong&gt; You run a local Go script once. It shows a QR code in your terminal. When you scan it, it generates a &lt;code&gt;whatsapp_session.db&lt;/code&gt; SQLite file containing your cryptographic keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pruning &amp;amp; Bypassing Limits:&lt;/strong&gt; GitHub Secrets have a strict 48KB limit. A Python script deletes unnecessary data, compresses it with gzip, and splits it into two Base64 strings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Cloud Workflow:&lt;/strong&gt; You upload those strings as GitHub Secrets. Every time your Action runs, it stitches the secrets back together, reconstructs the database on the server, logs in as your linked device, and sends the message!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🔗 &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/mark816p/WhatsGo-forGithubActions" rel="noopener noreferrer"&gt;WhatsGo for GitHub Actions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>github</category>
      <category>go</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
