My Setup Summary
Here is a brief summary of my particular setup. Note this is not necessarily a tutorial (with detailed steps) as much as it is a man holding a caution sign trying to help you around the potholes.
What I do?
I run a free newsletter (home page) along with a blog and a supplementary YouTube channel. My blog has a mixture of free and paid/gated content.
I use Webflow and Relume to build and maintain my website and blog. Gated content on the blog is managed through MemberStack 2.0.
My main source of subscriptions is probably going to be through Patreon (although Memberstack also allows me to directly handle paid subscriptions), so I wanted a way to automate adding new patrons to my gated blog content.
Why does this matter?
I started using Make.com to automate the process. This is where I started hitting snags since the Patreon test data is not entirely related to the real-life data. They are similar but not the same, and "that should work" often doesn't work in computer land.
If you're interested in following the similar path or using checking some of the tools I've been using, I've included some affiliate links near the bottom of this article.
Patreon Data
Webhook dialog
Patreon can send data is to webhooks you provide when certain events happen with members or pledges.
You get the webhook URL from whichever automation platform you are using. Two of the most common automation platforms are Zapier and Make. I personally use Make since I can design automation scenarios visually, but Zapier is a great choice for beginners, but it is more expensive.
Paste your the webhook URL into the edit box at the top of the register webhooks page (a Patreon creator account is required):
Once you click the plus to add the webhook, here is a sample screenshot of the webhook dialog on Patreon:
You can add multiple webhooks keyed to different data packets. There is also an API that is more sophisticated than I wish to use at this point at least while working alone.
You can set the toggles on the right of the dialog to correspond to the data you want to respond to in a given automation.
I set up a new member/pledge automation, an update member/pledge automation, and a delete member/pledge automation. I personally do not use the deprecated webhooks at the top since that would be asking for trouble if Patreon quits using them as planned.
The problem(s) ...
A JSON data packet is sent to the indicated webhook you provided when the event occurs.
You then need to process that data on your automation platform (more articles on this later if enough people are interested).
In principle, you can click "Send test" to send a test data packet next to your desired event type, and it does indeed send a test packet ... The Patreon forum support and other information is apparently convinced that works well enough.
It doesn't.
I know because I spent hours trying to scour their information to know precisely how their data is formatted, so I could then precisely know how to process it in my automations.
With that said, I appreciate the platform that Patreon has provided for creators to organize patron support, but they needed to add another effort or two to clarify the webhook data since many creators are working alone or have very small teams.
If you're still reading, aren't you glad you have me here now?
Issues
Here is where I started encountering issues with the Patreon data.
It does send a JSON data packet, but it is not specific tot he type of data you think you are receiving. In fact, as far as I can tell, it sends the same creator data pack no matter which test you click.
That is a problem. Programming and even "no-code" automations cannot be willy-nilly. You have to know what you are receiving precisely in order to be able to parse it. Some support is found on Patreon and in the forum, but it lacks specificity of the JSON data and how that data packet changes (or not) with each member or pledge update type.
There is a more comprehensive help page, but it is less helpful (at least to me) than it appears when you first find it. While it does discuss the JSON data format in pieces, in practice, it doesn't give the actual structure or specific data included in the JSON data packets that are sent to your webhooks. A lot of the information is spent talking about the API interface, which is fine, just not as useful if you're using the webhooks interface.
I don't think we should have to create a fake user and manually test and coordinate data packets to get the actual data format sent to the webhooks by a regular Patreon user, so that's what I'm trying to do for you now to the best of my ability.
If that works for you, then read on.
What is JSON Data?
Without getting too deep in the weeds, JSON data is a structured data format borrowed from JavaScript. The basic format is:
Each element can have one of several types: string, number, boolean (true or false), object, array, or null (no type).
Objects are defined with curly braces { ... }. Element names and their corresponding data are separated by a colon. Successive data elements are separated by commas.
The object type means the data elements can be nested, so we could have a person object as a data element.
An array is a list of data elements for a given element. We will need this below.
The elements of the array can be anything as well, but some sources implicitly assume they are the same data type.
If you want more explanation, a quick search will bring up half a dozen good sources.
Fortunately for us, a lot of no-code automation tools like Make or Zapier will parse the JSON data for us, so we can just indicate which data element we want. However, there are a few issues though which are covered in these articles.
New Member or Pledge Data
I decided to share what I know so far along with some specific (sanitized) data packets, so you can be better informed on how to process them in your own automations.
Now before I start the details, please be aware that Patreon could change the data format, and it might vary by user type. I will try to update this article as I learn more.
Full data packet
Here is an actual data packet send sometime in June 2023 with any user or creator specific information anonymized.
I apologize for the length, but I wanted to give everyone a better idea of an actual data packet than the standard Patreon documentation did.
The main problem is the above data is not the same as the "Send test" data packet, so you're left in the shadows trying to figure things out.
(Some) User data
The top "attributes" object has some useful user information:
But it doesn't split the user name into first and last names. You have to access those in the more detailed user data below.
The Make webhook module will automatically parse this main section of data.
Relationship data
Below the user data is the currently_entitled_tiers which is referenced from the below included data below:
I'm not sure as of August 2023 whether we actually need to access this relationship data since the more detailed tier data is included below.
Included array
The Make webhook module will automatically parse the main section of data, but it has an issue with the "included" data array apparently because the following data elements are not the same format (which is valid JSON data, but it causes some interpretation issues on Make).
I'll talk more in another article about how I dealt with this in Make to parse the relevant user data along with the user's chosen support tier.
Creator data
The first element of the included data is the creator info:
The creator summary and thanks_msg elements can include HTML tags which are omitted here.
Detailed user data
The user data is below the creator data:
Detailed tier data
Then finally the supported tier data which you will need while processing the new patron member or pledge:
This information was referenced in the relationships array data under "currently_entitled_tiers" near the top.
Is the structure always the same?
Unfortunately, I can't guarantee all the above data is the exact order of the data or that it will always have exactly the same set of data (see disclaimer reminder below) depending on the particular user or some other unknown factor. For example, it may vary if the user is also a creator, or it might change if a creator allows someone to pay for multiple tiers.
Please contact me if you notice any discrepancies. I want this information to be as accurate as possible.