<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Contributions — Sendy Forum</title>
        <link>https://sendy.co/forum/</link>
        <pubDate>Mon, 15 Jun 2026 05:38:02 +0000</pubDate>
        <language>en</language>
            <description>Contributions — Sendy Forum</description>
    <atom:link href="https://sendy.co/forum/categories/contributions/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Run Sendy with Docker in minutes: a community supported Docker Image</title>
        <link>https://sendy.co/forum/discussion/20246/run-sendy-with-docker-in-minutes-a-community-supported-docker-image</link>
        <pubDate>Mon, 13 Apr 2026 19:42:19 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>marcelorodrigo</dc:creator>
        <guid isPermaLink="false">20246@/forum/discussions</guid>
        <description><![CDATA[<p>Hey Sendy community! 👋</p>

<p>I wanted to share a community maintained Docker image I've built for Sendy that makes it much easier to deploy and manage your Sendy installation. It's now listed on the official Sendy integrations page at <a href="https://sendy.co/api" rel="nofollow">https://sendy.co/api</a> and it follows the guidelines required by Sendy.</p>

<p>🔗 GitHub + full setup instructions: <a href="https://github.com/marcelorodrigo/sendy" rel="nofollow">https://github.com/marcelorodrigo/sendy</a><br />
🐳 Docker Hub: <a href="https://hub.docker.com/r/marcelorodrigo/sendy" rel="nofollow">https://hub.docker.com/r/marcelorodrigo/sendy</a></p>

<p>If you already have a MySQL database for Sendy, you can run the container with the following command.</p>

<pre spellcheck="false" tabindex="0">docker run -d \
  -e SENDY_URL=https://newsletters.example.com \
  -e MYSQL_HOST=db.example.com \
  -e MYSQL_USER=sendy \
  -e MYSQL_PASSWORD=Pl3ase_Ch8nge_Me \
  -e MYSQL_DATABASE=sendy \
  -v sendy_uploads:/var/www/html/uploads \
  -p 80:8080 \
  -p 443:8443 \
  marcelorodrigo/sendy:latest
</pre>

<p>Need a full setup with Docker compose, database and volumes for translations and uploads? That's is also possible.</p>

<h2 data-id="why-run-sendy-as-a-docker-container">Why run Sendy as a Docker container?</h2>

<p>If you've ever struggled with setting up a server, configuring PHP, enabling the right Apache modules, or fighting dependency conflicts: Docker solves all of that:</p>

<h2 data-id="simple-deployment">🚀 Simple deployment</h2>

<p>Apache, PHP 8.5, all required extensions, mod_rewrite, and OPcache are all pre-configured and production-ready.</p>

<p>One command and you're live: no manual server setup.</p>

<h2 data-id="effortless-upgrades">⬆️ Effortless upgrades</h2>

<p>Upgrading Sendy versions is as simple as pulling a new tagged image. No more manually downloading zip files, replacing files, or worrying about breaking your installation. Roll back to a previous version just as easily if needed.</p>

<h2 data-id="security-built-in">🔒 Security built-in</h2>

<p>The container runs as a non-root user by default, reducing the attack surface significantly. Your Sendy license key is never baked into the image: it's consumed only at build time via Docker build secrets and never exposed.<br />
Startup validation also catches any misconfiguration before they cause problems in production.</p>

<h2 data-id="production-ready-extras">💚 Production-ready extras</h2>

<ul><li>🏭 Production Ready: Apache/PHP image based on ServerSideUp/PHP images</li>
<li>⚡ High Performance: Fine-tuned for optimal performance with opcache optimized for production</li>
<li>🔒 Security: Runs as non-root user</li>
<li>💚 Health Checks: Native health check support</li>
<li>⚙️ Easy Configuration: Simple and intuitive setup</li>
<li>☁️ CloudFlare Support: Native CloudFlare support with real IP addresses from trusted proxies</li>
<li>📊 Unified Logging: All logs directed to STDOUT &amp; STDERR for centralized output</li>
<li>🔧 Intelligent Init System: Apache + FPM + s6 overlay</li>
<li>✅ Validation: Required configuration validation on start-up to prevent mistakes</li>
<li>🌐 Web Server Features: .htaccess support with mod_rewrite enabled</li>
<li>📦 PHP Extensions: All PHP extensions required by Sendy installed and enabled</li>
<li>🚀 Latest PHP: PHP 8.5 with opcache enabled</li>
<li>💾 Volume Support: Support for /upload volume</li>
<li>🌍 Translations: Support for custom Sendy translations</li>
<li>🏗️ Multi-Architecture: amd64 and arm64 native support</li>
</ul><h3 data-id="important-notes">Important notes</h3>

<ul><li>This is a community-maintained image: not an official Sendy product. You still need a valid Sendy license from sendy.co</li>
<li>Feedback, issues, and contributions are welcome on GitHub!</li>
</ul><p>Happy sending! 🚀</p>
]]>
        </description>
    </item>
    <item>
        <title>I created a script that automates updating your Sendy installation</title>
        <link>https://sendy.co/forum/discussion/19918/i-created-a-script-that-automates-updating-your-sendy-installation</link>
        <pubDate>Thu, 24 Apr 2025 09:58:58 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>marcelorodrigo</dc:creator>
        <guid isPermaLink="false">19918@/forum/discussions</guid>
        <description><![CDATA[<p>Keeping your Sendy updated is something you should always look for.<br />
I am sharing with you my script that follows the Sendy instructions and updates your installation to the latest version.</p>

<p>On top of the official Sendy instructions, it generates a ZIP backup of your current installation in case anything goes wrong and you need to revert.</p>

<p>The only thing you must do is to configure the variable for sendy installation and your license code.<br />
The script takes care of downloading the new updated version for you.</p>

<p><a href="https://gist.github.com/marcelorodrigo/46aa79a31d92341083f2f46587749e7e" rel="nofollow">https://gist.github.com/marcelorodrigo/46aa79a31d92341083f2f46587749e7e</a></p>

<p>Let me know your thoughts and suggestions to improve.</p>
]]>
        </description>
    </item>
    <item>
        <title>Wordpress plugin to send campaign from new posts</title>
        <link>https://sendy.co/forum/discussion/19538/wordpress-plugin-to-send-campaign-from-new-posts</link>
        <pubDate>Mon, 19 Aug 2024 19:07:11 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>ptoone</dc:creator>
        <guid isPermaLink="false">19538@/forum/discussions</guid>
        <description><![CDATA[<p>I've recently developed a few Sendy integrations that I'm excited to share. One, in particular, stands out as especially useful: the WordPress integration. For a while now, I've been searching for a way to seamlessly connect RSS feeds to Sendy, and this solution finally makes it possible.</p>

<p>This integration is straightforward—it automatically sends any new WordPress post as a Sendy campaign. There's also an option to disable sending directly within WordPress by simply checking a box.</p>

<p>You can check out the plugin here: <a href="https://www.thexyz.com/apps/sendy-wordpress-plugin" rel="nofollow">https://www.thexyz.com/apps/sendy-wordpress-plugin</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Sendy Sign Up Form - Redirection Options</title>
        <link>https://sendy.co/forum/discussion/19270/sendy-sign-up-form-redirection-options</link>
        <pubDate>Thu, 11 Apr 2024 03:13:36 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>raymondkent</dc:creator>
        <guid isPermaLink="false">19270@/forum/discussions</guid>
        <description><![CDATA[<p>Sendy is great, but as marketers sometimes we want to send some users to a different thank you urls after signing up to a list.</p>

<p>In Sendy, by default you can only set one custom url per list. Which is brilliant and super easy if that's all you want.</p>

<p>But if you want to have different thank you urls for the same list, then you need to do something a bit different.</p>

<p>This html and script code allows you to create a subscription form for any list and have any thank you url.</p>

<p>So for the same list, you can create different forms with different urls to different thank you pages.</p>

<p>The sample code below also shows how to include hidden fields to update custom fields such as "Tag" and "Status"(you do need to create custom fields in Sendy first)</p>

<p>IMPORTANT:</p>

<p>The following code is basic, and only contains checking to see if the name field is empty and if the email address is in a valid format.</p>

<p>It is not checking the API response.  So if there is an error at the API level you won't know. <br />
Also, if the SAME email address is used, then this will update/overwrite whatever data was associated with the previous entry. It won't alert the user that they are already subscribed to the list.</p>

<p>So yes, there are some limitations, but you might find the idea/concept and code helpful as a guide.</p>

<p>You can paste the form code +  script directly into a wordpress custom html field, or as html on any webpage.</p>

<p>Just update the variables below with your data.<br />
NOTE: replace everything between the quotation marks including the square brackets</p>

<hr /><pre spellcheck="false" tabindex="0">In the &lt;form....  

update the following to your requirements

action="[enter in your sendy install url followed  by /subscribe]" i.e https://mysite/sendy/subscribe

Custom fields (in this example)
Tag = " [opted-in]"                     could be the campaign name for this form, or any other useful Tag value
Status = "[New]"         could be something like NewLead, Onboarding or anything else you want

**Note you can use Custom field values to create segment within a List. Note Creating Segmenting rules in Sendy are case sensitive.

List = "[list_id"]  enter in the unqiue list ID from Sendy that you want to add the subscribers to.

___________________
In the &lt;script&gt; section 

update the [desired url]  you want to send the user to.

window.location.href='[desired url]';




The Script:

Below is the full webpage code. 

You can copy and save the full code to create a webpage with an opt-in form

or just copy everything from 

&lt;form 
to
&lt;/script&gt;

and paste into wordpress as custom html or into any webpage.
</pre>

<hr /><pre spellcheck="false" tabindex="0">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;title&gt;Subscribe Form&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form id="subscribeForm" action="[https://yourwebsite/sendy/subscribe]" method="POST" accept-charset="utf-8"&gt;
&lt;label for="name"&gt;Name&lt;/label&gt;&lt;br/&gt;
&lt;input type="text" name="name" id="name"/&gt;&lt;br/&gt;
&lt;label for="email"&gt;Email&lt;/label&gt;&lt;br/&gt;
&lt;input type="email" name="email" id="email"/&gt;&lt;br/&gt;
&lt;input type="hidden" name="Tag" value="[opted-in]"/&gt;
&lt;input type="hidden" name="Status" value="[NewLead"/&gt;
&lt;input type="hidden" name="list" value="[List_Id"/&gt;
&lt;div style="display:none;"&gt;
    &lt;label for="hp"&gt;HP&lt;/label&gt;&lt;br/&gt;
    &lt;input type="text" name="hp" id="hp"/&gt;
&lt;/div&gt;  
&lt;input type="hidden" name="subform" value="yes"/&gt;
&lt;input type="submit" name="submit" id="submit"/&gt;
&lt;/form&gt;

&lt;script&gt;
document.getElementById('subscribeForm').addEventListener('submit', function(event) {
// Prevent default form submission
event.preventDefault();

// Get the form's action URL
var formAction = this.getAttribute('action');

// Get the values of name and email fields
var name = document.getElementById('name').value.trim();
var email = document.getElementById('email').value.trim();

// Perform error checking
if (!name) {
    alert('Your name is required. Please enter your name.');
    return;
}

if (!isValidEmail(email)) {
    alert('Please enter a valid email address.');
    return;
}

// Create XMLHttpRequest object
var xhttp = new XMLHttpRequest();

// Define callback function
xhttp.onreadystatechange = function() {
    if (this.readyState == 4) {
    // Redirect user after form submission
    window.location.href = '[your desired thank you url]';
    }
};

// Set up request
xhttp.open("POST", formAction, true);

// Send form data
xhttp.send(new FormData(this));
});

// Function to check if an email address is valid
function isValidEmail(email) {
// Regular expression for validating email addresses
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>

<hr /><p>I'm not a coder, so if there are improvements on the above feel free to comment.</p>

<p>Hope this helps anyone who is looking for such an option.</p>

<p>Reach out if you would like any support with the above.</p>

<p>ray@dmfunnels.com</p>

<p>Cheers<br />
Ray</p>
]]>
        </description>
    </item>
    <item>
        <title>Enable &quot;rolling&quot; segment timestamps</title>
        <link>https://sendy.co/forum/discussion/19139/enable-rolling-segment-timestamps</link>
        <pubDate>Thu, 08 Feb 2024 18:48:13 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>choffm12</dc:creator>
        <guid isPermaLink="false">19139@/forum/discussions</guid>
        <description><![CDATA[<p>I'm using this script to keep the timestamps in my segments automatically updated.</p>

<p><a href="https://github.com/choffm16/sendy_rolling_timestamps" rel="nofollow">https://github.com/choffm16/sendy_rolling_timestamps</a></p>

<p>This will allow you to create a segment such as "Active in Last 30 Days" that will include users active in the past 30 days, from whatever date today is. Hopefully I didn't just reinvent the wheel; I'm not sure if this functionality already exists.</p>
]]>
        </description>
    </item>
    <item>
        <title>Docker compose repository: production-ready with auto-update</title>
        <link>https://sendy.co/forum/discussion/19045/docker-compose-repository-production-ready-with-auto-update</link>
        <pubDate>Wed, 27 Dec 2023 13:08:36 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>mpalokaj</dc:creator>
        <guid isPermaLink="false">19045@/forum/discussions</guid>
        <description><![CDATA[<p>I took a moment to update my old (Ubuntu 16 LTS 🤭) server and figures I'd do it right.</p>

<p>This is a docker-compose setup that spins up:</p>

<ol><li>A sendy  container (Apache + PHP)</li>
<li>A Mysql container</li>
<li>An nginx reverse proxy container that supplies free TLS/SSL certificates (and security features)</li>
</ol><p>The setup downloads the latest sendy version, so it should always be up to data.</p>

<p>Request for <a href="https://sendy.co/forum/profile/Ben" rel="nofollow">@Ben</a>: this repo depends on the <code spellcheck="false" tabindex="0">https://sendy.co/download/?license=XXX</code> format, so I hope that you will keep this format alive.</p>

<p>Repository link: <a rel="nofollow" href="https://github.com/actuallymentor/sendy-docker-compose">https://github.com/actuallymentor/sendy-docker-compose</a></p>

<p>Instructions are in there, but in essence all you need to do is change the <code spellcheck="false" tabindex="0">.env</code> file and run a bash script (or manually run the commands if you want to know exactly what happens).</p>
]]>
        </description>
    </item>
    <item>
        <title>Sendy Integration with ActivePieces</title>
        <link>https://sendy.co/forum/discussion/19009/sendy-integration-with-activepieces</link>
        <pubDate>Tue, 28 Nov 2023 19:17:27 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>joeworkman</dc:creator>
        <guid isPermaLink="false">19009@/forum/discussions</guid>
        <description><![CDATA[<p>I developed an integration with ActivePieces for Sendy. I was only able to setup one way integration since sending data from Sendy to AP is not something that I can do. I thought that I would share though. I am moving off Zapier because of their exuberant price hikes.</p>

<p><a href="https://www.activepieces.com/pieces/sendy" rel="nofollow">https://www.activepieces.com/pieces/sendy</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Concrete CMS and Sendy integration</title>
        <link>https://sendy.co/forum/discussion/18472/concrete-cms-and-sendy-integration</link>
        <pubDate>Fri, 21 Apr 2023 09:19:25 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>cahueya</dc:creator>
        <guid isPermaLink="false">18472@/forum/discussions</guid>
        <description><![CDATA[<p>I have built a new plugin for concreteCMS that allows adding User Data to a Sendy List when going through eCommerce. Either General List for every customer or List per Product:</p>

<p><a href="https://github.com/cahueya/community_store_sendy_subscribing" rel="nofollow">https://github.com/cahueya/community_store_sendy_subscribing</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Outlook image dimensions</title>
        <link>https://sendy.co/forum/discussion/17504/outlook-image-dimensions</link>
        <pubDate>Tue, 12 Apr 2022 11:08:01 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>psjoo</dc:creator>
        <guid isPermaLink="false">17504@/forum/discussions</guid>
        <description><![CDATA[<p>Here is a modified /js/create/editor.php to output img width, height and align attributes instead of inline style for Outlook compatibility.<br /><a href="https://gist.github.com/petersjoo/e1049f2f543895520e36acca3a3f787f" rel="nofollow">https://gist.github.com/petersjoo/e1049f2f543895520e36acca3a3f787f</a></p>
]]>
        </description>
    </item>
    <item>
        <title>[Mod] Update User Country Code by Campaign Opens - Sendy v3.0.9.1</title>
        <link>https://sendy.co/forum/discussion/11804/mod-update-user-country-code-by-campaign-opens-sendy-v3-0-9-1</link>
        <pubDate>Fri, 15 Jun 2018 02:20:44 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>gavn8r</dc:creator>
        <guid isPermaLink="false">11804@/forum/discussions</guid>
        <description><![CDATA[<p>I love how campaign reports in Sendy show the countries that users are in when they open an email. I wanted to have the country code inside the subscribers table updated each time a subscriber opens an email so I can have updated segments, which I've created by country.</p>

<p>I'm an amateur coder, and created a PHP file to accomplish this goal.</p>

<p>Download it here: <a href="https://drive.google.com/open?id=1h2BgHJLNQdwJtl-5Ax0qzYk8DxAMab6B" rel="nofollow">https://drive.google.com/open?id=1h2BgHJLNQdwJtl-5Ax0qzYk8DxAMab6B</a></p>

<p>Install it by uploading it into your Sendy root directory.</p>

<p>Set a cron job to call the php file:</p>

<p>Command: <code spellcheck="false" tabindex="0">php /your/directory/update-country.php &gt; /dev/null 2&gt;&amp;1</code></p>

<p>Time Interval: <code spellcheck="false" tabindex="0">*/15 * * * *</code></p>

<p>Use at your own risk. It's working perfectly for me.</p>
]]>
        </description>
    </item>
    <item>
        <title>PSA: Apple had email issues recently</title>
        <link>https://sendy.co/forum/discussion/16392/psa-apple-had-email-issues-recently</link>
        <pubDate>Wed, 28 Apr 2021 09:55:31 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>jamescridland</dc:creator>
        <guid isPermaLink="false">16392@/forum/discussions</guid>
        <description><![CDATA[<p>On Monday, every single one of my subscribers who used an iCloud/Mac/Me email address was bounced (and silently unsubscribed from my Sendy list).</p>

<p>Apple's email support team responded:</p>

<blockquote><div>
  <p>Your email was rejected due to a temporary issue that has now been resolved. Please resend your email and it should get through. We regret the inconvenience caused.</p>
</div></blockquote>

<p>You probably suffered the same fate as I did, and you may find your subscriber list is down.</p>

<p>If it's useful (and you know how to do it) then you can fix those subscribers across your Sendy installation here:</p>

<p><code spellcheck="false" tabindex="0">UPDATE</code>subscribers<code spellcheck="false" tabindex="0">SET bounced=0 WHERE (email LIKE '%icloud.com' OR email LIKE '%me.com' OR email LIKE '%mac.com')</code></p>
]]>
        </description>
    </item>
    <item>
        <title>Sendy now working on Kubernetes - Full Walk-through Guide</title>
        <link>https://sendy.co/forum/discussion/16845/sendy-now-working-on-kubernetes-full-walk-through-guide</link>
        <pubDate>Wed, 25 Aug 2021 18:43:35 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>redpilltrades</dc:creator>
        <guid isPermaLink="false">16845@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all!<br />
I spent the past few weeks figuring how to get Sendy working on Kubernetes!</p>

<p>Here is the blog post (quite long as it goes through each step in detail)<br /><a href="https://blog.jotcode.com/deploying-sendy-on-kubernetes/" rel="nofollow">https://blog.jotcode.com/deploying-sendy-on-kubernetes/</a></p>

<p>Here is the Github repo with all the files:<br /><a href="https://github.com/jotcodeofficial/sendy-kube" rel="nofollow">https://github.com/jotcodeofficial/sendy-kube</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Sendy Hooks - an easy way to integrate Wordpress and Sendy</title>
        <link>https://sendy.co/forum/discussion/16505/sendy-hooks-an-easy-way-to-integrate-wordpress-and-sendy</link>
        <pubDate>Fri, 21 May 2021 18:32:54 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>bulgaru</dc:creator>
        <guid isPermaLink="false">16505@/forum/discussions</guid>
        <description><![CDATA[<p>Hello!</p>

<h1 data-id="repository">Repository</h1>

<p>Please find the repository here: <a href="https://github.com/bulgaru/sendy-hooks" rel="nofollow">https://github.com/bulgaru/sendy-hooks</a></p>

<h1 data-id="installation">Installation</h1>

<p>Simply upload the files into your Wordpress plugin directory.</p>

<h1 data-id="intro">Intro</h1>

<p>For a couple of years we've been integrating our clients' webapps with Sendy and developed in-house a plugin that easily hooks into the Wordpress. We're making this project public, so feel free to explore it. It currently offers a seamless integration via 3 routines and relies on the Sendy Api to send the data.</p>

<h1 data-id="advantages">Advantages</h1>

<ol><li>Out of the box integration with User registration, WooCommerce purchases and Contact Form 7 submissions</li>
<li>All settings are available in the Wordpress Admin interface (no need to manually edit config files</li>
<li>The code is modular, making it easy to integrate other routines and plugins.</li>
</ol><h1 data-id="donations-support-involvement">Donations, support involvement</h1>

<p><a rel="nofollow" href="https://paypal.me/bsensus"><img src="https://img.shields.io/badge/Donate-PayPal-green.svg" alt="Donate" /></a> <a rel="nofollow" href="denied:mailto:hello@bsensus.com"><img src="https://img.shields.io/badge/paid%20support-hello%40bsensus.com-blue" alt="Support" /></a></p>

<p>Please let us know if you're interested in further development of the hooks or if you'd like to help.</p>
]]>
        </description>
    </item>
    <item>
        <title>Bash script to simplify Sendy updates</title>
        <link>https://sendy.co/forum/discussion/11680/bash-script-to-simplify-sendy-updates</link>
        <pubDate>Wed, 23 May 2018 23:01:54 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>marcelop</dc:creator>
        <guid isPermaLink="false">11680@/forum/discussions</guid>
        <description><![CDATA[<p>Hello guys, Ben, hope everything is ok there.</p>

<p>I deal with 6 Sendy installations for customers that have purchased the license, and every time a new version is released, the manual updating task is time consuming. So, I wrote this bash script to automatically update the installation, and after a couple iterations and corrections, I now have it working as a breeze and without errors.</p>

<p>Although, since this require the cPanel account containing the script to be able to provide access to jailed shell, I really would love to avoid this and have it in the form of PHP script, or even better, bundled as a feature of Sendy itself <img src="https://sendy.co/forum/resources/emoji/smile.png" title=":)" alt=":)" height="20" /> Hopefully, someone can provide that.</p>

<p>In the meantime, here I share the script for those who may need something alike, or even to point out fixes or improvements.</p>

<p>For this script to work, you must run it as the user. If you use cPanel, then first allow jailed shell to that account, and by connecting via SSH, you will land on  <code spellcheck="false" tabindex="0">/home/username</code>, then create a blank  <code spellcheck="false" tabindex="0">sendy.sh</code> file, and assign execution permssions to it:  <code spellcheck="false" tabindex="0">chmod +x sendy.sh</code>.</p>

<p>Then paste the below code inside. Take into account:</p>

<ul><li>For CentOS 6.x replace  <code spellcheck="false" tabindex="0">/bin/sh</code> with  <code spellcheck="false" tabindex="0">/bin/bash</code></li>
<li><p>Replace  <code spellcheck="false" tabindex="0">[license]</code> with your actual license string.</p>

<pre spellcheck="false" tabindex="0">#! /bin/sh
cd ./public_html;
wget https://sendy.co/download?license=[license] -O sendy.zip;
unzip sendy.zip;
cp .htaccess sendy/.htaccess;
cp includes/config.php sendy/includes/config.php;
cp -R sendy/* .;
rm sendy -drf;
rm sendy.zip -f;
chmod -R ugo-x,u+rwX,go+rX,go-w ./;
</pre></li>
</ul><p>Then save, and to execute simply run:  <code spellcheck="false" tabindex="0">./sendy.sh</code>. If everything went well, it should not throw any errors. After execution is completed, go to your browser and login to your Sendy installation and it will automatically update the database accordingly. Just try to perform these tasks in hours where no emails are being sent, or at least notify you customers to schedule the process with enough anticipation in order to avoid any kind of issues.</p>

<p>Please consider this script was coded under CentOS 7.5 with cPanel. Other environments may have distinct rules/paths and you should always make a trustworthy backup before trying this solution. In my personal case, it updated Sendy in just 2 seconds.</p>

<p>Hope it helps anybody interested in this solution. And of course I'm open to suggestions.</p>

<p>All the best,<br />
Marcelo</p>
]]>
        </description>
    </item>
    <item>
        <title>[Mod] SMTP bounce mod available</title>
        <link>https://sendy.co/forum/discussion/13327/mod-smtp-bounce-mod-available</link>
        <pubDate>Tue, 04 Jun 2019 20:23:25 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>IRCF</dc:creator>
        <guid isPermaLink="false">13327@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>We have been testing for a few weeks a patch to implement SMTP bounce.<br />
The code available here : <a href="https://github.com/ircf/sendy_smtp_bounce" rel="nofollow">https://github.com/ircf/sendy_smtp_bounce</a><br />
Feel free to use and/or redistribute.</p>

<p>This code consists in two parts:</p>

<ul><li>A patch to apply to your sendy install, so the Return-Path can be customized with your bounce mailbox (bounce config must be set in sendy config file)</li>
<li>A bounce.php program and helper classes to copy to your sendy install. The bounce.php must be added to your crontab so it can check periodically the bounce mailbox</li>
</ul><p>Do not hesitate to report bugs <img src="https://sendy.co/forum/resources/emoji/smile.png" title=":)" alt=":)" height="20" /><br />
Mathieu at IRCF.</p>
]]>
        </description>
    </item>
    <item>
        <title>Quick WordPress snippet to create a Sendy subscribe shortcode, validates and submits via JS</title>
        <link>https://sendy.co/forum/discussion/16370/quick-wordpress-snippet-to-create-a-sendy-subscribe-shortcode-validates-and-submits-via-js</link>
        <pubDate>Fri, 23 Apr 2021 10:19:29 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>presswizards</dc:creator>
        <guid isPermaLink="false">16370@/forum/discussions</guid>
        <description><![CDATA[<p>This PHP code snippet creates a WordPress shortcode named <code spellcheck="false" tabindex="0">[sendy-subscribe]</code> which can then be placed almost anywhere to output a nice Sendy subscribe form.</p>

<p>Replace YOUR-POST-URL-HERE with your Sendy install URL such as sendy.mydomain.com<br />
Replace YOUR-LIST-ID-HERE with your List ID.<br />
BuyerType field is an example custom field drop-down, rename it, delete it, switch to radio, text, etc. Note that custom fields are Case-Sensitive, match them exactly.</p>

<p>I'd recommend using the <a rel="nofollow" href="https://wordpress.org/plugins/code-snippets/">Snippets plugin</a> to easily add and manage code snippets, much safer than using functions.php, or create your own custom plugin. Once the snippet is added and enabled on the front-end, you can use the shortcode <code spellcheck="false" tabindex="0">[sendy-subscribe]</code> almost anywhere to add a form to the website.</p>

<p>It will submit via JS to enforce the required name/email fields.</p>

<p>Here's the PHP code snippet:</p>

<pre spellcheck="false" tabindex="0"> &lt;?php
 function sendy_shortcode() {
 return '&lt;script&gt;
 window.onload=function(){
     document.getElementById("name").required = true;
     document.getElementById("email").required = true;
     var form = document.getElementById(\'sendy-subscribe-form\');
     form.addEventListener(\'submit\', function(ev) {
         form.submit();
     }, false);
 }
 &lt;/script&gt;
 &lt;div id="submitted-msg" class="" style="display:none"&gt;&lt;/div&gt;
 &lt;form name="sendy-subscribe-form" id="sendy-subscribe-form" action="https://YOUR-POST-URL-HERE/subscribe" method="post"&gt;
     &lt;label for="name"&gt;Name&lt;/label&gt;&lt;br/&gt;
     &lt;input type="text" name="name" id="name"/&gt;
     &lt;br/&gt;
     &lt;label for="email"&gt;Email&lt;/label&gt;&lt;br/&gt;
     &lt;input type="email" name="email" id="email"/&gt;
     &lt;br/&gt;
     &lt;p&gt;&lt;label for="BuyerType"&gt;I am a:&lt;/label&gt; &lt;select name="BuyerType" class="select " id="BuyerType"&gt;
         &lt;option value=""&gt;I am a:&lt;/option&gt;
         &lt;option value="Retail Consumer"&gt;Retail Consumer&lt;/option&gt;
         &lt;option value="Wholesale Buyer"&gt;Wholesale Buyer&lt;/option&gt;&lt;/select&gt;&lt;/p&gt;
     &lt;p style="display:none;"&gt;&lt;input type="text" name="hp" class="hidden " id="hp" value=""&gt;&lt;/p&gt;
     &lt;p&gt;&lt;input type="submit" name="submit" id="form-submit-btn" value="Subscribe" class="button"&gt;&lt;/p&gt;
     &lt;input type="hidden" name="list" value="YOUR-LIST-ID-HERE"/&gt;
     &lt;input type="hidden" name="subform" value="yes"/&gt;
 &lt;/form&gt;';
 }
 add_shortcode('sendy-subscribe', 'sendy_shortcode');
 ?&gt;
</pre>

<p>If there's any interest, I may create a more mature WordPress plugin that adds hiding the form, avoiding the Sendy response pages, and just displays a message... reach out.</p>
]]>
        </description>
    </item>
    <item>
        <title>PHP code to move subsribers from one list to another</title>
        <link>https://sendy.co/forum/discussion/16223/php-code-to-move-subsribers-from-one-list-to-another</link>
        <pubDate>Fri, 26 Mar 2021 04:23:31 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>robva</dc:creator>
        <guid isPermaLink="false">16223@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all,</p>

<p>I'm no PHP programmer but usually manage pretty well by copying and pasting snippets of code. Because I'm unwilling to use Zapier to move subscribers from one list to another (as ultimately that becomes quite expensive), I have written a bit of code that I run daily through a cron job. It works flawlessly so far, so I figured I might as well share the code. (If you're a PHP programmer and can make the code more elegant, that would be great though.)</p>

<p>In phpMyAdmin you can look up the numbers of your lists. They're in your Sendy database, in table  <code spellcheck="false" tabindex="0">lists</code>. In there I want to move subscribers from my list 3 to my list 5. You have to look up your own numbers. I want to do that once my subscribers have received my last autoresponder. That's visible in table  <code spellcheck="false" tabindex="0">ares_emails</code>. My last autoresponder message is 12. Again, you have to look up your own number.</p>

<p>What I want to do, is move my subscribers to list 5, as long as they're still in list 3 and have received autoresponder message number 12.</p>

<p>This is the code I use:</p>

<pre spellcheck="false" tabindex="0">&lt;?php  

$link = mysqli_connect("localhost", "user", "password", "sendy-database");  

if($link === false){  
  exit;  
} 

$sql = "UPDATE subscribers SET list = 5 WHERE list=3 AND last_ares=12";  

if(mysqli_query($link, $sql)){  
  exit;  
} 

mysqli_close($link);  

?&gt;
</pre>

<p>This code is in file  <code spellcheck="false" tabindex="0">movefrom3to5.php</code> in my sendy directory. So the cron job I use is:</p>

<p><code spellcheck="false" tabindex="0">59 23 * * * php /serverpath/domainname.com/public_html/sendy/movefrom3to5.php &gt; /dev/null 2&gt;&amp;1</code></p>

<p>Hope that helps!</p>

<p>Regards,</p>

<p>Rob</p>
]]>
        </description>
    </item>
    <item>
        <title>WordPress Plugin: Integration of Sendy with WooCommerce</title>
        <link>https://sendy.co/forum/discussion/16073/wordpress-plugin-integration-of-sendy-with-woocommerce</link>
        <pubDate>Fri, 19 Feb 2021 09:43:49 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>sat</dc:creator>
        <guid isPermaLink="false">16073@/forum/discussions</guid>
        <description><![CDATA[<p>Hi All,</p>

<p>Here is a WordPress plugin - Integration of Sendy with WooCommerce. <br /><a href="https://github.com/ProThoughts/wc-sendy" rel="nofollow">https://github.com/ProThoughts/wc-sendy</a></p>

<p>This plugin automatically adds WooCommerce Customers name and email to Sendy List after the order status is marked completed.</p>

<p>Here are a few ways this plugin can help you quickly build your email list, connect with your audience, and accelerate the growth of your business:</p>

<ul><li>Grow your email newsletter audience instantly. When a customer purchases something from your store they are added to the email list automatically.</li>
<li>Motivate your audience to purchase. Turn a first time customer into a repeat customer by emailing them incentives such as a coupon or free shipping.</li>
<li>Remove the stress of marketing with ready-to-go automated campaigns. Pre-written automated campaigns will save you time and market your business 24/7.</li>
</ul><p>Features:</p>

<ul><li>Option to add URL of your sendy installation.</li>
<li>Option to add any Sendy email list.</li>
<li>Adds customer to sendy list after order is marked as complete.</li>
<li>Adds note on order that email is added to sendy list.</li>
</ul><p>Let me know if you want any features in this plugin. or feel free to contribute on Github - <a href="https://github.com/ProThoughts/wc-sendy" rel="nofollow">https://github.com/ProThoughts/wc-sendy</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Auto Subscribe WC or WP Registered user to Sendy list.  Updated.</title>
        <link>https://sendy.co/forum/discussion/15680/auto-subscribe-wc-or-wp-registered-user-to-sendy-list-updated</link>
        <pubDate>Wed, 02 Dec 2020 00:47:52 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>bdacus01</dc:creator>
        <guid isPermaLink="false">15680@/forum/discussions</guid>
        <description><![CDATA[<p>Updated contribution.</p>

<p>I found Pross' work here <a href="https://sendy.co/forum/discussion/7501/auto-subscribe-on-wordpress-registration#Item_2" rel="nofollow">https://sendy.co/forum/discussion/7501/auto-subscribe-on-wordpress-registration#Item_2</a></p>

<p>It won't work with current Sendy because there is not API key in pross' code since it was for a older Sendy version.</p>

<p>I have added the needed code to:<br />
Have api key, firstname, and a customer role filter list.<br />
If new account doesn't have the first_name filled in pull it from the registration POST.<br />
WP "user_register " does not write out to the database until after registration is complete.<br />
This code is for WC Customers, but could easily switch to WP Subscribers.  We are assuming they bought products or created an account in WC.<br />
We dont bypass double opt in or set gdpr.  That could be added as needed.</p>

<p>The updated Gist is here: <a href="https://gist.github.com/bdacus01/84171d9454e7ab4152be2edc65855c21" rel="nofollow">https://gist.github.com/bdacus01/84171d9454e7ab4152be2edc65855c21</a></p>

<p>Thanks<br />
bdacus01 <br />
the regular guy</p>
]]>
        </description>
    </item>
    <item>
        <title>[Mod] Dark theme</title>
        <link>https://sendy.co/forum/discussion/14227/mod-dark-theme</link>
        <pubDate>Sat, 11 Jan 2020 05:23:03 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>User5432</dc:creator>
        <guid isPermaLink="false">14227@/forum/discussions</guid>
        <description><![CDATA[<p>I've created a dark theme for those of us who like everything dark.</p>

<p>It's a work in progress, and I'm sure there's a few things I missed, but from what I can tell most of the dashboard is themed. If you see anything missing please let me know.</p>

<p>Get it here: <a href="https://github.com/this-is-rafa/sendy-dark-theme" rel="nofollow">https://github.com/this-is-rafa/sendy-dark-theme</a></p>
]]>
        </description>
    </item>
    <item>
        <title>[DOCKER] Sendy available on hub.docker.com</title>
        <link>https://sendy.co/forum/discussion/15087/docker-sendy-available-on-hub-docker-com</link>
        <pubDate>Sun, 19 Jul 2020 10:48:10 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>bubbajames</dc:creator>
        <guid isPermaLink="false">15087@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all,<br />
I use docker for all my installations and recently created one for Send 4.1.0.  You can find all the instructions, Dockerfile, docker-compose.yml, etc on hub.docker.com.</p>

<p>Checkout: <a href="https://hub.docker.com/r/bubbajames/sendy" rel="nofollow">https://hub.docker.com/r/bubbajames/sendy</a></p>

<p>The docker image repository has a section to report Docker-specific issues.  While I'll do my best to address them, please realize I have a full-time job and family.  :-)</p>

<p>If you're interested in assisting with issues or extending this project, feel free to leave a comment with text [DOCKER-CONTRIBUTE] in body and your github.com username.</p>

<p>Regards,<br />
BubbaJames</p>
]]>
        </description>
    </item>
    <item>
        <title>Curl command to push a new subscriber to your sendy</title>
        <link>https://sendy.co/forum/discussion/15046/curl-command-to-push-a-new-subscriber-to-your-sendy</link>
        <pubDate>Wed, 08 Jul 2020 15:24:45 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>rickcogley</dc:creator>
        <guid isPermaLink="false">15046@/forum/discussions</guid>
        <description><![CDATA[<p>I wanted to figure out how to push a new subscriber to a sendy list from a shell script. Taking a look at the PHP examples it is pretty easy to figure out how to do it with <code spellcheck="false" tabindex="0">curl</code>. Here's what it would look like:</p>

<pre spellcheck="false" tabindex="0">curl -X "POST" "https://yoursendy.com/subscribe" \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "api_key=123YourAPIKeyFromSettings123" \
     --data-urlencode "boolean=true" \
     --data-urlencode "silent=true" \
     --data-urlencode "name=Joe Bloggs" \
     --data-urlencode "email=joe.bloggs+test202007001@gmail.com" \
     --data-urlencode "list=ABC123TheListId" \
     --data-urlencode "CustomField=Blahblah123"
</pre>

<p>Replace the api_key and list id with your own. Note a couple of things:</p>

<ul><li>It needs to be a POST request</li>
<li>The header needs to be set to "Content-Type: application/x-www-form-urlencoded"</li>
<li>The key=value pairs go in the "body" of your request because they are mimicking form fields. It doesn't work if you send them as URL params</li>
<li>The list id you can get from the list of lists in the UI</li>
<li>If it succeeds it just returns a "1" not some json</li>
</ul>]]>
        </description>
    </item>
    <item>
        <title>The script I use to import contacts via API</title>
        <link>https://sendy.co/forum/discussion/14963/the-script-i-use-to-import-contacts-via-api</link>
        <pubDate>Fri, 19 Jun 2020 22:19:17 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>jakob</dc:creator>
        <guid isPermaLink="false">14963@/forum/discussions</guid>
        <description><![CDATA[<p>I need to trigger the confirmation autoresponder. There is a post of a similar name (<a href="https://sendy.co/forum/discussion/1641/the-script-i-use-to-import-contacts-via-api#Item_2)" rel="nofollow">https://sendy.co/forum/discussion/1641/the-script-i-use-to-import-contacts-via-api#Item_2)</a>, but due to redirects I'm throwing an error. Using some googling to find poorly undocumented curl parameters I changed the script to the following</p>

<pre spellcheck="false" tabindex="0"> &lt;?php

 //-------------------- EDIT HERE -----------------------//
 $sendy_url = 'YOUR-URL-TO-SENDY/';
 $api_key = 'YOUR-SENDY-API-KEY';
 $list_id = 'YOUR-SENDY-LIST-ID';
 $csv_file = 'YOUR-CSV-FILE.csv';
 //------------------------------------------------------//

 //------- DON'T CHANGE ANYTHING FROM HERE ONWARDS ------//
 ini_set('auto_detect_line_endings',TRUE);
 $file_handle = fopen($csv_file, "r");
 $ch = curl_init();

 while (!feof($file_handle) ) {
 set_time_limit(0);

 $line_of_text = fgetcsv($file_handle, 1024);

 $fields = array(
     'name' =&gt; urlencode($line_of_text[0]),
     'email' =&gt; urlencode($line_of_text[1]),
     'api_key' =&gt; urlencode($api_key),
     'list' =&gt; urlencode($list_id)
 );

 foreach($fields as $key=&gt;$value) { $fields_string .= $key.'='.$value.'&amp;'; }
 rtrim($fields_string, '&amp;');

 curl_setopt($ch, CURLOPT_URL, $sendy_url.'/subscribe');
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
 curl_setopt($ch, CURLOPT_POSTREDIR, 3);

 if ($line_of_text[0] != ''){
         curl_exec($ch);
         sleep(5);
 }

 echo $line_of_text[1];
 echo '&lt;br&gt;';

 }

 fclose($file_handle);
 curl_close($ch);
 //------------------------------------------------------//

 ?&gt;
</pre>

<p>Now, to get the script to work:</p>

<ol><li>create a .csv-file with lines of <code spellcheck="false" tabindex="0">NAME MORENAME,MAIL@ADDRESS.COM</code></li>
<li>create an index.php-file with the code above</li>
<li>edit the variables to match and save</li>
<li>create a new folder on your server for a given domain (translating into a URL to visit)</li>
<li>upload the .csv and the index.php to your server in the new folder</li>
<li>visit the URL of the domain where you uploaded your files</li>
<li>wait: the script will take some time to allow autoresponders to process the requests</li>
</ol><p>You may want to password protect the folder so no one can trigger the script by accident when visiting the URL.</p>

<p>cheers,<br />
Jakob</p>
]]>
        </description>
    </item>
    <item>
        <title>Sort by Date Sent</title>
        <link>https://sendy.co/forum/discussion/12109/sort-by-date-sent</link>
        <pubDate>Sat, 01 Sep 2018 00:11:03 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>Blaine</dc:creator>
        <guid isPermaLink="false">12109@/forum/discussions</guid>
        <description><![CDATA[<p>If you'd like to be able to sort by date sent, see the code below.</p>

<p>Sorry for the repost; I must not have saved my ticket request properly because I can't find it anywhere now. But I decided instead of trying to open it as a new ticket I would just solve it myself, so here is my solution.</p>

<p>First, the problem. Last May, this ticket mentions that there's no option to sort by date because it already sorts chronologically, which isn't entirely accurate: <a href="https://sendy.co/forum/discussion/comment/7501" rel="nofollow">https://sendy.co/forum/discussion/comment/7501</a></p>

<p>Currently, the default sort is based on the campaign id, descending. Nice and simple, <em>except</em> that that is the chronological order of the campaign being created, and doesn't reflect when that campaign was actually sent. Which, if you are scheduling campaigns in advance, or creating draft messages, can be a little confusing to find which emails went out in which order...for example: <a href="https://www.evernote.com/l/ALuwS416SoVJ0LFZckp1Plw6IYgk_1BCC9AB/image.png" rel="nofollow">https://www.evernote.com/l/ALuwS416SoVJ0LFZckp1Plw6IYgk_1BCC9AB/image.png</a> <br />
(Note that in this screenshot, it's at least been a month since these were sent; it's much worse when they are all saying 1 week ago etc!)</p>

<p>The other problem is that if you change your sort order, you have to wait for the cookie to expire or manually delete the cookie that tracks how you want to sort in order to get back to chronological order, as sorting by campaign goes alphabetically and not by campaign id.</p>

<p>So, this solution I came up with will address the default sort, which is what I want 99.9% of the time to be the sent date in descending chronological order. In app.php on line 129:</p>

<pre spellcheck="false" tabindex="0"> $q = 'SELECT * FROM campaigns WHERE userID = '.get_app_info('main_userID').' AND app='.get_app_info('app').' ORDER BY id DESC LIMIT '.$offset.','.$limit;
</pre>

<p>Replace that line with:</p>

<pre spellcheck="false" tabindex="0"> $q = 'SELECT * FROM campaigns WHERE userID = '.get_app_info('main_userID').' AND app='.get_app_info('app').' ORDER BY CASE WHEN sent="" THEN IFNULL(send_date, 9900000000+id) ELSE sent END DESC LIMIT '.$offset.','.$limit;
</pre>

<p>What this will do is sort any draft messages first that haven't been sent yet, then chronologically will list all sent and scheduled campaigns based on the date they are scheduled to be sent or the date that they actually were sent.</p>

<p>Note that the first time you do this, if you are like us, you'll have a lot of drafts that never got sent to delete!</p>

<p>The problems with this solution as is:</p>

<ol><li>You can't sort by another column and then return to this sort without deleting the sendy sorting cookie in your browser.</li>
<li>You can't sort chronologically earliest to latest (though I can't honestly think of why you would want to?)</li>
<li>You have to change that line every time Sendy updates.</li>
</ol><p>There is a solution to the third comment, I really should post my replacement scripts code one of these days (basically, I've setup a system where I can update something on the page before rendering it, or change code itself and have it eval(), from a custom directory, so that I can update Sendy without losing my customizations.) If anybody has implemented something similar, here's my actual function I'm using since there's a lot of escaped characters:</p>

<pre spellcheck="false" tabindex="0"> function sortBySent($buffer)
 {
     $original = '$q = \'SELECT * FROM campaigns WHERE userID = \'.get_app_info(\'main_userID\').\' AND app=\'.get_app_info(\'app\').\' ORDER BY id DESC LIMIT \'.$offset.\',\'.$limit;';
     $new = '$q = \'SELECT * FROM campaigns WHERE userID = \'.get_app_info(\'main_userID\').\' AND app=\'.get_app_info(\'app\').\' ORDER BY CASE WHEN sent="" THEN IFNULL(send_date, 9900000000+id) ELSE sent END DESC LIMIT \'.$offset.\',\'.$limit;';
     // echo "&lt;!--\n\n$original\n\n$new\n\n--&gt;";
     $buffer = str_replace($original, $new, $buffer);
     return $buffer;    
 }
</pre>
]]>
        </description>
    </item>
    <item>
        <title>How to setup scheduled cron on AWS Lightsail LAMP server</title>
        <link>https://sendy.co/forum/discussion/14528/how-to-setup-scheduled-cron-on-aws-lightsail-lamp-server</link>
        <pubDate>Fri, 27 Mar 2020 08:32:51 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>SendingAsDrew</dc:creator>
        <guid isPermaLink="false">14528@/forum/discussions</guid>
        <description><![CDATA[<p>First, just wanted to say awesome program!</p>

<p>Second, I had an issue getting the scheduled cron to work. The solution for me was to include the full bin path of php. So, to make it work,</p>

<ol><li><p>Log into your Lightsail server's console</p></li>
<li><p>Type in</p></li>
</ol><blockquote><div>
  <p>sudo crontab -e</p>
</div></blockquote>

<ol start="3"><li>Paste the following at the bottom of the file:</li>
</ol><blockquote><div>
  <p>*/5 * * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/sendy/scheduled.php &gt;&gt; /dev/null 2&gt;&amp;1</p>
</div></blockquote>

<p>Thirdly, code change recommendation to send-to.php ~line 841</p>

<blockquote><div>
  <p>&lt;pre id="command"&gt;&lt;?php echo PHP_BINARY;?&gt; &lt;?php echo $server_path;?&gt;scheduled.php &gt; /dev/null 2&gt;&amp;1&lt;/pre&gt;</p>
</div></blockquote>

<p>Although I haven't tested the PHP_BINARY constant extensively on shared servers.</p>

<p>Keep up the great work!</p>
]]>
        </description>
    </item>
    <item>
        <title>AWS-Lambda-contact-form-sendy-subscribe working</title>
        <link>https://sendy.co/forum/discussion/14506/aws-lambda-contact-form-sendy-subscribe-working</link>
        <pubDate>Sat, 21 Mar 2020 08:52:02 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>rhodebump</dc:creator>
        <guid isPermaLink="false">14506@/forum/discussions</guid>
        <description><![CDATA[<p>Hi,</p>

<p>I have a wordpress site, and I was formerly using mailchimp and a plugin called "MCFWP", or "Mail Chimp for Wordpress" to user subscribed to my lists in mailchimp.  I have since migrated my lists to sendy, but I missed having the integration between my contact form on wordpress and my mailing list.</p>

<p>I now have a wordaround.  I have a serverless stack that performs the functions of my contact form and integrates to sendy.  I put the two files into a github project.  <a href="https://github.com/rhodebump/aws-sendy-contact-form" rel="nofollow">https://github.com/rhodebump/aws-sendy-contact-form</a></p>

<p>To summarize,<br />
Plain html/jquery on front end posts ajax request</p>

<p>ajax request is received by AWS API Gateway<br />
API Gateway sends it to lambda function<br />
lambda express sends a contact email and calls sendy subscribe API</p>
]]>
        </description>
    </item>
    <item>
        <title>Template Unsubscribe Intercom.io</title>
        <link>https://sendy.co/forum/discussion/14473/template-unsubscribe-intercom-io</link>
        <pubDate>Wed, 11 Mar 2020 20:53:55 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>ibornset</dc:creator>
        <guid isPermaLink="false">14473@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I created a template for subscribe/unsubscribe based on Intercom.io follows the code below:</p>

<p>Sample:</p>

<p><a href="https://i.imgur.com/bNPBXIS.png" rel="nofollow">https://i.imgur.com/bNPBXIS.png</a>. <br /><a href="https://i.imgur.com/5Dpmix8.png" rel="nofollow">https://i.imgur.com/5Dpmix8.png</a></p>

<p>Code:</p>

<p><a href="https://www.codepile.net/raw/1n1VQblv.html" rel="nofollow">https://www.codepile.net/raw/1n1VQblv.html</a></p>

<p>Enjoy <img src="https://sendy.co/forum/resources/emoji/smile.png" title=":)" alt=":)" height="20" /></p>
]]>
        </description>
    </item>
    <item>
        <title>[MOD] API for reporting back how many clicks each link got in a campaign</title>
        <link>https://sendy.co/forum/discussion/13966/mod-api-for-reporting-back-how-many-clicks-each-link-got-in-a-campaign</link>
        <pubDate>Wed, 13 Nov 2019 09:51:07 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>jamescridland</dc:creator>
        <guid isPermaLink="false">13966@/forum/discussions</guid>
        <description><![CDATA[<p>I needed an API to be able to report back how many clicks each link got in a campaign. I use it to be able to overlay the total number of clicks in a web view, to enable me to know what people are finding interesting, and what people aren't.</p>

<p><a rel="nofollow" href="https://gist.github.com/jamescridland/4a5e013c5d5edbcd99ded61412a16568">The GIST is here</a>, and returns a JSON object that lists each link in turn, without the tracking code, for programmatic use. You need to know the label you set (which allows you to do this programmatically, since you can't easily look up the internal Sendy campaign ID).</p>

<p>I hereby release this as CC-0 and you're welcome to build on this work however you'd like. It works for me, though can't guarantee it'll always work for you.</p>
]]>
        </description>
    </item>
    <item>
        <title>Elementor forms integration</title>
        <link>https://sendy.co/forum/discussion/13306/elementor-forms-integration</link>
        <pubDate>Fri, 31 May 2019 04:00:52 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>inbound</dc:creator>
        <guid isPermaLink="false">13306@/forum/discussions</guid>
        <description><![CDATA[<h2 data-id="new-and-free-wordpress-plugin">New and FREE WordPress plugin</h2>

<p><strong>With this you can send Elementor Pro's form widget subscribers to your Sendy list</strong></p>

<p>You can <a rel="nofollow" href="https://wordpress.org/plugins/inboundlatino-sendy-elements/">find it here</a> or download it within your WordPress installation.</p>
]]>
        </description>
    </item>
    <item>
        <title>[MOD] API for reporting on a campaign</title>
        <link>https://sendy.co/forum/discussion/12402/mod-api-for-reporting-on-a-campaign</link>
        <pubDate>Tue, 13 Nov 2018 09:00:47 +0000</pubDate>
        <category>Contributions</category>
        <dc:creator>jamescridland</dc:creator>
        <guid isPermaLink="false">12402@/forum/discussions</guid>
        <description><![CDATA[<p>I needed an API to report on individual campaigns, and since there wasn't one, I've written one.</p>

<p>It works just like the other Sendy APIs, with the API key. It returns total sent, total opens, unique opens and country data.<br />
You need to supply the API with the brand_id and the label for the individual campaign.</p>

<p>The code is <a rel="nofollow" href="https://gist.github.com/jamescridland/1f4ea72fbd262fa31850ccfd5a54df0a">on this Gist</a> and you're welcome to it (and welcome to grab and use this code in future versions of Sendy).</p>

<p>I hope this is helpful and useful for someone.</p>
]]>
        </description>
    </item>
   </channel>
</rss>
