Writing a Revue sync plan

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
Search for a command to run...

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
Supreme, I loved it. Some hearts and claps from me
Most of you know me for my consistency, a golden arrow in my blog series. I've written 1000 articles in 1008 days! Almost an article a day, and my honeymoon was the only holiday I ever took. I'm super proud of this achievement; it has been a fantasti...

It's not the first time I'll be talking about community. I think it's an essential aspect of any successful tool. This shows in my previous explorations of Astro, Medusa, and now Vendure as well. All these products thrive in a super open, welcoming, ...

The cool part about Vendure is how easy it is to set up and how abstract each layer is. Basically, we get the following elements: External database Server Worker Admin UI Frontend While this is amazing, it also brings a bit of complexity when it co...

The previous article looked at customizing Vendure on a data and process level. In this article, we'll look at customizing emails, as they are often a big part of a webshop system. We'll be looking at two different layers of customization for customi...

Even though Vendure is a pretty significant project out of the box, in some cases, we might want to go in and modify some elements to work to our specific use case. In this article, I'll take a high-level look at some elements we can customize within...

As you might have seen in the previous article, I'm a bit frustrated by the Revue lock-in on Twitter.
I'm using Sendy, and I want to keep using that to send my newsletter.
So let's take matters into our own hands and write a plan on how we can achieve just that. This article will be a collection of ideas on how we'll tackle the process.
In further articles, we'll build the tool to start syncing them.
I think it's always a good starting point to look at the desired outcome. When are we happy with the result?
In my case:
If I hit these goals, I'm happy with the product.
In an ideal world, I'd also like to be able to sync the subscribers from Sendy to Revue, but at this point, Sendy does not have an open API to retrieve all subscribers.
To write it out in more detail, we would like to run the following scripts in order.
Let's quickly sketch this idea out to see if that will work.
| Sendy | Revue |
| [email protected] | |
| [email protected] | |
| [email protected] |
In our sync, we want to move all subscribers from Revue to Sendy.
So after our run, the table should look like this:
| Sendy | Revue |
| [email protected] | [email protected] |
| [email protected] | [email protected] |
| [email protected] | [email protected] |
As you can see, both systems now have all users.
Let's say Chris decided to unsubscribe from Revue. He will be marked there as unsubscribed so that we will get this information from Revue on the next run.
Our new data structure will then look like this:
If Chris then decides to join via Sendy, a webhook will be triggered that subscribes him to Revue automatically.
Meaning our data will look like this again:
| Sendy | Revue |
| [email protected] | [email protected] |
| [email protected] | [email protected] |
| [email protected] | [email protected] |
I'm thinking of adding a flag to users coming from Revue. This way, once Sendy opens up an API to list all subscribers, we can quickly sync the two.
Sendy does come with subscribe and unsubscribe webhooks, so perhaps we can also look at how we can sync those to Revue.
In the following article, we'll start this process. The first step will be creating a clean slate, meaning both systems need an equal starting point.
Because Sendy is my central database, I want to unsubscribe everyone there to import to Revue.
Subscribe to the mailing list to keep updated on this project.
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter