# Community Meetup July 16th, 2021: Product updates, Data structures in n8n, Lightning talks

## Метаданные

- **Канал:** n8n
- **YouTube:** https://www.youtube.com/watch?v=RN8wFypXmOs
- **Дата:** 21.07.2021
- **Длительность:** 1:13:30
- **Просмотры:** 156
- **Источник:** https://ekstraktznaniy.ru/video/15788

## Описание

**Note:** Most of the nodes in n8n handles pagination. However, they don't handle rate limits.

Agenda:

(00:00) Welcome!
(02:15) Product Updates by Max Tkacz
(10:15) Data Structures in n8n by Harshil Agrawal
(22:45) Q&A
(29:15) Lightning talk by Vihar Kurama
(37:15) Lightning talk by Jan Baykara
(46:10) Lightning talk by Jason McFeetors
(55:35) Office Hours

## Транскрипт

### Welcome! []

cool so hello everyone once again and welcome to the entertainment monthly community meetup and as always we have some very exciting talks from our community members and the team as well i am hashirag your host for this meetup now before starting let's you know go through some housekeeping rules so that we know what to expect during this uh meetup and how we can interact with each other so the first thing is we are recording the meetup and will be sharing it later on youtube so if you are not comfortable feel free to turn off your camera and if you have any questions for any of our speakers feel free to post them in the chat i'll collect all these questions and ask them during the q a sections that we have and lastly uh be respectful and mindful of whatever used during the meetup so let's kick off today's meetup with uh with the agenda so first we have max who will be giving us the insights and talk about some exciting product updates then we have ivan uh unfortunately ivan could not make it so i will be taking his place and i'll be helping you understand the data structure in any time and after that we'll have a small break for q a where you can ask any questions that you might have for our talks and the next we have jan from common knowledge who will be talking about community groups and campaigns and the needs for inexpensive simple usable and reliable automation tools like nhm and uh the next will be uh having jason who will help us understand how we can use discord with anytime to uh to get real-time notifications for our uh work uh for you for our edit and workflows and we got vr a friend from appsmith who will talk about how you can build a customizable dashboard uh for your social media accounts with ntn nf smith and we will wrap up the meetup with another round of q a and office hours so keep your questions coming i am going to make sure that i get uh i ask your questions to the speakers

### Product Updates by Max Tkacz [2:15]

speakers so moving to our first talk we have max who is the head of designer dana 10 and max might share some super exciting secret stuff so over to you max thanks a lot marshall for that introduction and thank you everyone who's attending this it's always humbling to see how many people uh want to hear this info and it's so cool to see some familiar faces um very exciting update we've actually got a lot in the pipeline i'm going to show some features i'm going to discuss about some other things that we're working on right now um i'll share my screen to show you that first thing that we've uh ready to release so what you're seeing here is um we've got a new version notification functionality coming out so right now in naden there's no real way to know how many versions you are behind especially if there's maybe a critical update uh security update like that so we've rolled out this feature and what it does is in a nutshell it'll tell you when there's new features um what you're seeing right now is i just had a workflow open i loaded this screen and in the bottom right we do have notifications when there is a critical update so this is one that we've marked manually as something that's sort of mission critical security vulnerability and that's the only time that will actually send you these notifications um otherwise on the bottom right here you'll see there's this new little present icon here with the number of updates available um you know it's not always important to update to the latest version if you're one version behind but when that number starts going up you might want to take a look at what you're missing um so if i do click on the present icon here it opens up this drawer here and we can see right now we're using some mock data here but that we're two weeks behind right now and four versions behind so maybe this is a good time to update and then we can see here we have all the sort of versions that we're behind from um for each version we have a little write-up of what that uh includes and also the note icons and we wanted to get that in there so you can quickly scan and see which updates are relevant to you of course if there's a security update it's relevant for all users but you might be more interested in updating faster if you see that there's a node that you use a lot there might be some new functionality there um so again it's not the biggest feature in the world but we wanted to get this out because every week pretty much naden's releasing a new version and there's always something interesting that we're working on bug fix new nodes core improvements so this way you can kind of get to that faster clicking on any one of these would open up that version and our changelog there's also this link here which we've updated our documentation to have this central hub so you know how to update depending on if you're on docker if you're on intent cloud etc um if you are an internet cloud when this deploys when you click on this button and actually open up the admin panel and have an actual um step-by-step quick tutorial on how to update that if you haven't done that before so that's version notifications in nutshell it doesn't look like this so much um you know on this front end here but um moving forward when you update your you don't have to actively sort of go in and go check that now at the same time by virtue of having this update functionality you know this instance does have to ping an n server and we know that some of our users are very privacy conscious or have a use case that requires you know total isolation so we are shipping with an environment variable where you can turn this functionality off if you want to in no way um ping sort of a central server to get that update information um so we did kind of think about our privacy conscious users there um so that's that feature um coming up soon in the pipeline we're basically sort of testing it and polishing a few things is the much anticipated weight node so i'm personally very excited about this i'm right now in n there hasn't been a very good waiting strategy so you could pause for a minute with a function through a sleep node but now with the weight node you'll be able to do extended pauses for example a month a year even what it'll do is it'll take the workflow and record it and save it and so when it's time to trigger that workflow again sort of resuscitates that so it's sort of a sophisticated proper strategy on how to handle that um there will be three modes one will be to wait a certain amount of time a relative month a day an hour that sort of thing there'll be another mode to wait until a specific date and time which obviously you could set programmatically um when you do run an execution and the third one that's very interesting is you'll be able to wait until a specific webhook endpoint is triggered so that's going to be very useful um for example if you have a workflow that maybe requires something external from that workflow to be finished maybe it's some sort of status changing on a ticket or perhaps it's actually a human step where someone has to check a button that some sort of process was approved um you'll be able now to model that by waiting for a web hook to be called and then the workflow will resuscitate and continue um i think there's a lot of use cases that are gonna be sort of possible with that so really excited to see that get rolled out it should be out very soon what we also have to show a quick demo of this um we have now to the generic http request node we've added an option to split into items so i can demonstrate this by if i execute this right now what we're doing in this workflow and this endpoint is we're simply returning an array of orders as we can see here here's the uh the nnn payload for the node this is our first item here we have one item and we have uh sort of an array within here of all these orders um the split into items options if this was removed you could find here split into items when i check that to true and execute this what now gets returned is anything that was in the top level as an array can get split into items so we were seeing a lot of cases where so many users for specifically this case had to go get a function though it had to go write that and so now we've added this option to kind of help at least in these simple cases so you don't have to go do that additional step um and so hopefully that's going to help a lot of our users who are using custom endpoints now this is a small change to the http request for native nodes that you might want to do this sort of data transformation for we do have an item list helper node coming up so what this will do is it'll allow you to split a single item of data into multiple items this is the biggest use case we're seeing where people have to go to the function node where maybe the function node's kind of overkill they want a simple way to set it up in no code um so that's going to be coming out soon it basically just has to go through the old review and polish cycle i'm really excited about that because i think it's going to allow so many users to not have to reach from function mode if they don't want to and that's going to be just the first of um sort of a handful of data transformation nodes coming out we either expand on a single node or add new ones but generally what we're looking right now is at all the various ways that people use the function node and when it comes to data transformation picking up those sort of abstract uh cases and things that they tend to be doing a lot um so that we can have a node for that so you don't have to reach for a function node um other than that um in parallel the team's getting bigger so it's very nice that we can work on things in parallel but we are diligently working on user management as i've said before we've sort of split that up into milestones so we can release an mvp give value to our users and add to that so that's very much in progress right now in the next weeks i'll be able to update you on that progress as well um so that's the product update thanks to everyone in the team that got to do all this amazing stuff and of course our community for helping guide us and submit prs we really appreciate it thanks all right for uh the next one our host will

### Data Structures in n8n by Harshil Agrawal [10:15]

will present a topic on data structure in nitm so harshal please take it away okay i think it's good now all right so today i'm going to talk about data structures in ntn i know this is a bit more technical topic but i'm going to try my best to explain and go through a bit slowly and try to cover everything so that you understand how the data structure in anything works how what when you might need to you know use of the function node to transform data from one structure to another so let's get started and take uh an overview of how it looks so this is whenever you make a request why http uh by the http request node or you are getting some data from another api this is the top level structure that uh looks uh that you will get so let's just break it down into small parts so first of all if you see there is a orange box that is called items so that's uh that's the whole array that uh max showed us earlier right and each and in this particular items box we have smaller boxes which are each individual item right i am going to go through an example to show you the difference over here but yeah but moving forward now each of this item can have a box within itself which can which contains the valuation and now each json can have another box within itself which contains different values so these values can be your actual data so something like you know the order id the name of the particular order the price and everything like that so moving forward so this is how the overall your data might look like so again there is a box which is an items and each of this box contains uh different boxes which have which we call as json objects and then in this json objects there are another boxes which actually contain your data so over here you can see that our actual data is the name the age and the rule so this is how the overall structure looks like in ntn now moving forward over here i this is a screenshot of one of the nodes so if you execute the node you get a list of items in here now if you see we have on the nodes we specify the total number of items that get written and each of this row is an individual item so you can see that the total number of items here is 5 and each of these rows is an individual item now let's take a look at how it actually looks under the hood in any time so for this i have taken an example of the function node because we often times uh use the function node for data transformation so the important thing to note over here is that you can see that there is the json key for each and every item in here now this is the actual code that you write but this is the value that editon displays you so na10 does not show you the json key it only gives you the required data so sometimes i have seen a lot of users get confused from uh and this is why i wanted to specify this particular thing that we uh we don't extract the json object we don't display it to you but it's under the hood this is how it looks like so again coming back to and taking a full picture over here we have an items box which contains individual smaller boxes which are json objects and this json objects they contain your actual data so this data can have you know any kind of structure it can be another object or it can be an array so now let's take a look at it again i'm gonna steal max's example over here and i'm gonna go through the same example so i'm gonna execute the node and it is gonna return the same data that max showed us but over here if you see it says only one item but we have a lot of different orders in here now this is because if i close this we have the main uh array sorry the main box which was uh in the orange box and then this is the and there is this one single box in here so the orange box and there's just one box and that is why for any 10 this is only one item but if we split it into items and if i execute this now what it will do is it will now get those items from that from the inner item box and then i give us the json body so if you see over here now we have the items as 30 and now we have each of these individual items so this was the items and why you should care about it so one of the reasons is often times we get all these values and we want to you know do some uh process on each of these values but if you don't have the values coming in as this as the end data structure only the first item in that value gets processed and you then you know have to you may be loop around it and figure out a way of how you can process this uh all the items so if you convert your incoming request into the entertain data structure you don't have to create any sort of loop so anytime then handles it for you so let's take a quick look over here so i'm just going to use the set node for now and i'm going to set a value over here let's just get the employee name right now another important thing to note over here is we just show the first value over here but we are going to process all the incoming data so if i execute this node you see that we have we are getting the value for all the incoming data and not only just the first item now this is again because we are following the ntn data structure but what happens when we don't do that so let's turn this off execute the node now remember we are now just getting only one item so i have to go ahead and change the expression in here so you see now that like each of this becomes an array and we are only able to specify one particular value so now if i execute this node it only gives me the first value so this is where you really uh this is where uh transforming your data into the uh into the data structure that and it can follow is really helpful when you uh when you want to process all the information for each of this incoming items now since we are talking about transformation let's take a look at how you can do it so uh to access the data there we since anytime uses javascript under the hood we are using javascript uh you yeah notations to access the data so again items is the whole box so we are telling hey we need something from the items okay cool but what do you need now so we need the first value from the items so if you are familiar with uh arrays in javascript the first value always is indexed with zero so because i want the first object i am telling from items and then what exactly do i want so i want this particular json object and that's why i then specified. json so what this will return is this will return the whole uh json object which is the name the age and the rule but if i want to uh let's just say get the second item right so over then i have to specify items and then change the index value over here and then i can calculation what happens when we want to you know get a specific value let's see that's the name so in that case what we do is we just you know after json we again use a dot notation so this becomes dot json dot name so now it will only written as the name and it won't give us the age and the role so now let's take a look at how it looks like at that from a third party api and how it looks like in any time so whenever you make a request uh on the third party or for the third party api uh maybe using a tool like postman right you might get the data in this format but for anytime this is how it looks under the hood right and if you see over here we have the results array and we want to just get the results right we just don't we don't want the count or the errors we want the actual results so that we can process it further so for that what we do is we use the map function of javascript to specif and extract those values so what will happen over here is it will go through the results array maps to those values and give you only this particular object and then you can connect another node and then process all that information moving forward to the next example sometimes you might want to combine all these worries together and this is where this example is really useful to understand so let's just say we now have different values in here right we have a json object which contains name john a name mary and now we want to combine them and get it into one single object json object so that's why this kind of code snippet is really helpful so what it does is it goes through all these items and it gets those values and it then uses the join operation to joins them so this is how it would look like so in the end my message would be uh john mary and someone whose name starts with p right so something like that so this was a small overview of uh data structuring any time if you have any questions i would love to address them so feel free to uh post your questions in the chat and i just to take a quick summary of what we talked about so we talked about that if uh if your incoming data is following the data structure of ntn your data will travel from node to node and it's called items and inside the list each item contains an object we saw the inner box that has the json and inside the object again it is the key json and sometimes if you are working with files the key might change from json to binary and if you want to transform your data there are essentially three steps that you should take care of is to first recognize which is the incoming data structure so is it just an array within an area is it just uh is it a an area that contains all those items the next is to extract with you know with the expressions so something like item0 dot json and then that particular value and the last is to return it into the compliant data structure using the javascript methods that i talked about earlier we already have a code snippet documented which contains all the most common code snippets that you might have uh that you might need so you can always head over to our documentation and it's in under the reference section and again if you have if you're facing any kind of problem or if you have more questions around transforming your data you can always ask us the questions on our community forum so that's it thank you and i am going to stop setting my screen all right so we are gonna now move ahead

### Q&A [22:45]

and start the q a session so if you have any questions just uh set in the chat and we will get them we'll get to them okay i am seeing a couple of questions so i am gonna start addressing them okay all right uh so i see a question that is asking can the json object be nested yeah so a json object can have another json object within it and it can be you know a nested object so that is possible but again to reference that you if you just want you know reference to that specific json value you have to then reference it using the dot notation of the square notation will the slides be posted somewhere for us to download so paul we would be uh sharing the recording of the talk on our youtube channel so you can just subscribe to our youtube channel and get notified whenever we share it can you talk a bit about the transformation of the json to binary sure so if you want to transform something from json to binary we already have a core node for that and it's called move binary data so you can using that node you can convert your data from binary to json or json to binary so i would suggest you to you know use that node instead of hard coding that i really like this question what is the font used in the diagrams uh i said i am not too sure i am using this tool that's called xli draw and i'm using the fonts that they have another question i say is can you have both json and binary yeah so you can it depends on how the uh what kind of data the api is sending so let's just say you are making a request to add table and you have a binary file somewhere a table it can be maybe an image right and you are getting that image so it would contain the json object as well as the binary object too i think i have addressed all the questions i'm not sure if you if i've missed your questions just place a said in the chat once again and i'll get and i'll get back to it yeah okay i see cy has one more question she'll see why while you are saying that max will there be any kind of node or something which would you know extract this step where we don't have to uh code and maybe you know transform it using a node um so could you clarify that last bit um extract what sorry so maybe we don't write javascript and we have a native node in it and that does the transformation for us oh sorry um yes so the plan here is the way we see it is we don't want to have a monolithic transform node because um in terms of ux there's lots of different things that you might want to transform so the first node that will be coming out is i would say the first of our data transformation nodes and that's going to like the biggest case that we've seen has turned sort of a single item into multiple items but what we will be doing is holistically and actually ended in clouds a really good kind of data point for us on this is studying all the different ways that users are transforming data with the transform node or with the function item node and extracting from that these kind of abstract things that people are doing so item to items is one there's a long tail of other things that we've sort of got a finger around the pulse and seeing okay people are starting to do this and basically that'll be a typical um product management exercise of just prioritizing what are we seeing the majority of people using and doing that could be done very simply with a node so i expect once this node is out again we wanted to um you know we're startup we're thinking lean we wanted to get this out because this is going to save a lot of pain for a lot of users um but this you know the book won't be closing so we'll be done we're going to continue studying and seeing what are you guys you know doing with the function node function item node and like how can we model that as either a mode of one of these existing transform nodes or a brand new node so i would say watch that space again item to items is going to be the first thing that rolls out but i think obviously for an app like naden transforming data is pretty valuable the easier we can make that the more utility our app can provide also for a larger audience of people so i would say strategically we're definitely focusing and looking on how we can add nodes beyond that one that we'll be releasing so um the tl dr is yes we will have more nodes that can do that and i see another question from cy that money already answered but let me address that as well so we can access json objects silently differently in different languages that's true so how can we take care of that for example in python we have native dictionaries huh okay uh i think that this depends on how your object is in like what is the structure of the incoming uh data right because even if you are using i don't know like python it's still you know giving you uh you are creating an api and you are giving us the information via the api right so i think it's kind of then again following the javascript standards over there to extract those values so yeah that's what i would say and that's what i think it's you know the way to move forward with the game because you're not coding in python with anything you are coding with javascript all right so moving forward to our next talk we

### Lightning talk by Vihar Kurama [29:15]

have vihar kumara who is a developer and a writer and a creator working with the growth team at smith as an engineer and a developer at vocate and in this talk he will share a customizable dashboard where you can create schedule and manage all your social accounts within minutes using ntn and app smith over to yuviha all right uh thanks for the introduction harshal uh thanks for having us here uh now let me share my screen i have a quick presentation all right uh you guys can see my screen yes awesome all right uh so this is a small talk uh i'm gonna share you a super cool app that i regularly use uh so this uh i call it i call this as a social broadcaster and i've built this using appsmith and na10 uh so moving on i'm going to share you with the motivation behind building this so all right so uh why i have built this so usually i deal with a lot of social platforms every day and i feel managing content is really hard you know we'll also uh will always have to log into twitter linkedin discard slack and then you know cross-post content across all this platform so i felt uh you know it's a hard problem for everyone and safe at all we have a customizable dashboard where we could manage all the content that would be super helpful for all the users and then uh again building completely building an app from scratch uh using you know javascript frameworks is hard and then i thought i could utilize na10 and appsmith to build this uh application myself uh there are two uh you know advantages of this so it took me just uh 10 minutes to build this app and both appsmith and i10 are completely free and open source with that being said uh let me give you a quick intro of what apps methods all right so appsmith is an a local platform that will help you build internal uh tools 10x faster so this is a quick in infographic of how apps networks so first you have uh appsmith connects to any data source currently there are 10 data source you can connect to post postspace uh either of these uh you know any of the available data sources and then you can query all the data using javascript uh you can write custom logics and then you know you can literally do anything uh you know literally clone any application uh using this javascript and then you can instantly publish your apps and then deploy it within a single click all right so uh i'll quickly go through how i've built this app using apps with anything uh cool so uh this is how uh my ui looks like so this is uh you know uh so i'm currently using the apps uh app smooth cloud version as you can see you have the widget section and then you have the uh data source section so first uh you can choose whatever widgets uh you want on your app and then uh quickly drag and drop it here so you know uh i had you know dropped a few widgets here so this is a basic text widget and if you open it up if you click on this you can see a property pane here and then you have your input widget and then just for customization sake i have used for switch widgets here uh so my idea is you write once and then you publish to all the short social platform uh within a single click so this is the basic ui it took me less than five minutes to build this on appsmith and then coming back to n810 uh so i am using uh the cloud version of my 10 so this is how my uh workflow looks like and then i'm using a web webflow web hook up which uh connects to uh app uh which i can access with appsmith and then uh send data through all this platform as you can see this is a simple uh if node that i've used on anything so this basically uh you know communicates with the switch widget uh on the appsmith all right and then uh configuring mojo and isn't it is super easy all you need to do is just uh you know add a link uh authorize with your uh social platform uh and then this literally took me like five minutes to build this all right that being said uh so i'm gonna quickly show you how i'm connecting the web hook onto appsmith so on n10 i've just copied my uh url of the test url here and then on appsmith i've used an api so this is my webhook url and then in the body i'm sending all the information from my widgets as you can see this is the input text that i'm taking from the input widget from appsmith and these are all the conditions from which uh you know i can share all my content onto different social platforms it's that simple and if you can also see here on the evaluated uh type it says content as undefined since i do not have any text there and then medium since you know nothing is selected uh you know i have everything evaluated here all right so that being said i'll quickly you know post something or to these elected social platforms cool so i'm gonna execute my workflow here and then now it waits for the webhook call let me hide this cool all right now i'm gonna say appsmith and na10 are awesome and then i'm gonna select slack discard twitter and linkedin so these four are now connected to my you know personal social accounts and then within single click uh there you go everything is done so if you go to my twitter let me refresh this okay just um cool so uh my discord i can see my message on slack linkedin let me refresh my page all right i think i'll have to reauthorize it because i've tested this uh a while ago let me do it quickly all right so sorry i have passed these two things so what i'll do is i'll execute the workflow again and this time i'm gonna select only twitter and linkedin so i'm just disabling this thing post now let me go back refresh and there you go so within single click you can manage everything all your uh you know social platforms so i felt this interesting and then you know thought of sharing this with you uh this talk uh being said that uh we also did a demo last week uh so we also have conference on the talk uh he'll be posting you that link where we have built the entire uh tweet tech clone using uh apps with nineteen uh feel free to uh go through that and you know experiment with things all right over to you oh that was awesome thank you for sharing this and i already got a sneak peak of it before so i am really excited to you know build something of my own and try it out and you know build a stars project as a product out of it so yeah once again thank you for this so moving on to our next talk uh

### Lightning talk by Jan Baykara [37:15]

we have jan is a research and a software engineer at common knowledge and in this talk he will uh talk about using automation for community group and com and campaigns so over to you young hey guys um how's it going hey i recognize some of you um yeah so what can i say um we've uh maybe i'll intro myself in common knowledge real quick and then we'll talk about the kind of uh work that we've been doing and how nin has very nicely fitted into our kind of entire workflow with our collaborators so um common knowledge is a worker cooperative we've been going for about two years um we're a collection of uh researchers engineers designers and political activists and organizers and uh we work with community groups um especially non-unfunded community groups or kind of uh charitably funded groups to um basically address what they're you know whatever they're dealing with uh specifically around campaigns or with um dealing with like large groups of volunteers and things like that so um the work that characterizes um their kind of mission it is around kind of like big database operations syncing lots of different tools that are easily accessible to volunteers or part-time staff and um and kind of making the best of what they can to kind of basically bring people together and get stuff done so they're not big they're not normally big operations they don't normally have much funding or particularly long-term well-trained staff either and um and we do what we can to kind of make sure that they're doing the best that they can with the full gamma of digital technologies um and then the course of this work um since where we fit in is that we're startup engineers uh historically um or researchers we've worked in agencies as well and um we noticed that all these all these folk had lots of kind of problems to solve and were doing the best they had but had very little really uh awareness of what they could be using to solve these problems a lot of these issues were always ended up with one technical guy who in their spare time fiddles around with a bunch of scripts uh maybe we've seen horrible like really terrifying examples of like google apps scripts um we've like lost passwords or uh zapier account that ends up with like half the organization's like budget or something like that and um and everything in between a lot of like kind of haps the wheeling as well lots of like manual stuff uh for you know that could take days of someone's time for things that could take a couple of minutes with you know with a well-designed little um pipeline or a workflow um so we stepped into that we've been looking at products but we've also been basically trying to help them wire up their organizational processes we've learned a lot for it um so i'll quickly share my soon because it's boring to see my face um i'll just share my whole screen hopefully you can see uh see that um yeah so it's a bit of us and some of the people we worked at um if you want to have a look afterwards and um what we were doing recently was looking at specifically the issue of automations and pipelines and because through that we ended up finding nam we've looked at loads of different uh pipeline tools um very kind of high-tech uh you know kind of engineer-oriented ones like uh stack storm or whatever it's called uh you know zapier comes to mind uh but we ended up uh landing on nine for a couple of specific reasons that we put into a blog and um and the nn team are very kindly reposted to their own blog um the things that really drew us where it's it doesn't cost much it's always competitive compared to savior but more importantly um you can build your own stuff on top of it fairly easily and it's still quite usable um crucially you can kind of host your own kind of version of it and that was a really important thing for us while um while we were dealing with quite a security conscious group um called uh united voices of the world which is a labor union in london it deals with um it deals with uh well with workers who work in the kind of care or cleaning sector um they often work in like big newspapers and stuff like that or you know one case of royal parks and they were dealing with like a particularly um uh kind of security conscious project that required them to think about um where how their data was being piped around the internet so we suggested that they set up an n instance this is the first time we were able to suggest anything like this because of course you can't run your own zapier you can't um easily kind of onboard people onto a lot of the other technical tools for this kind of job that you can self-host and i can't show you the pipelines that they've run but basically we found that when we showed people a screenshot of like or a screen share of like a workflow and um and kind of like walked them through it we could even like design stuff with them uh the idea of like kind of just having stuff in a diagram kind of workflow kind of clicked in people's minds but like this is oh yeah this is like a thing that i can see how this works compared to what they previously had which was as i said some guy who uh every once in a while from four time zones away might update uh a google sheet um or of a script that corresponds to it so that's been really helpful to us and um even though we've not had integrations up until recently for other tools that accesses like action network or nation builder these kind of crm tools the http request nodes and we've also built our own custom nodes have been really helpful um one thing we've noticed from sapir is um that you really have to have a certain kind of threshold of kind of you know uh relevance to kind of the wider worlds to kind of have your tools integrate with a tool like this whereas we've been able to take quite a niche relatively niche kind of problem area and um develop a few kind of develop a few best practices or a few kind of like common like nodes for those kind of uh for the tools that work in that ecosystem and we've begun to um get people together who are also enthusiastic about it so that they can set up these systems for their own so a couple of unions are trialing at the moment a couple of political organizations in the uk are trialling it and we've been able to um in the process uh move away from some of the more like custom tech that we um would have always have to use and basically take some of the self stuff like a air table for example um and just use some like simple um simple end scripts um to kind of almost like uh to almost like mimic what we would otherwise be probably building as a silly heroku app or something with like uh with some endpoints and that's been really exciting um uh in the process like it's kind of helped us think about the of the rest of the open source stack um so we we're kind of putting together a little wiki of like all these different options you can pick for different kinds of systems so things like help desk systems or forums or leaks and stuff and we're particularly looking at stuff that has like a good clean uh api interface that we could then uh articulate through nine and um being able to kind of save it the integrations part of that whole kind of you know stack is also part of the open source system you could do the same thing as you do with all these other things run out on your own uh you know vps um have some governance around it some rules has been a real kind of like revolution for us um that's really cool um yeah i don't know i mean maybe i can stop i can talk more into particular details but um that's a tiny bit about uh common knowledge for co-op um we're really into open source um uh the fact that it's a kind of code free uh free codes um tool is awesome for us it means that we have a bit of confidence in pointing uh the kind of progressive community um to this uh progressive activist community to this kind of tool because there is no fear that it's going to disappear um or that all their hard work is going to suddenly uh not be possible to kind of extend so yeah you know thank you to the team for building a great uh great platform and um for being very accessible and very very friendly i'll pass it back to you i guess awesome uh thank you jan for the talk it was really insightful and thank you know for sharing your use cases and talking up talking us and sharing more about why uh you know you selected anytime and just giving us an insight into it now joining us from canada and

### Lightning talk by Jason McFeetors [46:10]

continuing the tradition of hawaiian t-shirt friday i hope he's wearing an t-shirt today we have jason so jason uh will show us how we can monitor our workflows and use discord to get notifications jason over to you thanks a lot harshel and yes it is friday um thank you very much for letting me uh speak again today and uh today i'm going to talk a little bit about a challenge that i ran into and how i've been using nan to kind of get past some of those issues and see what is really going on behind the scenes sometimes with some of my workflows so quite often i would find out often when a client would tell me or when it was too late that something wasn't working right with one of my workflows something was causing errors so on and so forth and so i started investigating a little bit about well how can i be more aware of what's going on how can i get um errors to pop up how can i send event logs uh somewhere so that i can see them more easily and it was actually some of the stuff that harshall was doing with some of the discord stuff that kind of made two and two come together so what i'm going to do is i'm going to share my screen and i'm going to show you uh a few workflows actually that i've put together and we'll let you see just some of the uh stuff that i'm working on so um i'm assuming you can see my screen and what we've got here is um i've got the familiar naden uh screen interface and i've got a discord that i've set up so i'm not going to go into too much detail about how i've all done this i actually have created a blog post on how this all works and i'll put that into the chat later on and this gives you a step by step on how to build this out for yourself if you find it useful but essentially what i've done is i've created two separate workflows one i use for doing senior event logs and the other one i use for sending error logs and i've created two different channels in the discord app and in each of the channels i've created web hook integrations so i can take those web hook integrations and i can in my name instance give them that web hook url and then send text to it so this is some of the stuff that harshal's been showing us so i kind of decided well i'm going to take with the information that we've that we're getting and push it through whenever something happens like an error or i want an event log so this is it there's all there is to it there's really a discord node and i've got a testing node just for checking some stuff out um and what i do is i will call this so i've got a test node here that i use my error testing node so what i will do is i can actually call that event log workflow and the reason i create it as a separate workflow is so that i can call it from multiple different places and that will fire off an event log for me similarly i've also created a i will grab the error log node and again i've got some sample testing information but really this is the important part right here and it does the same thing when it sees an error on a workflow that is set up for it and i'll show you how to set that up in a second it will fire a bit of information off to discord as well so when i will run our my error test as an example you'll note that in here i have to make a change so in the settings i need to put in the error log i'm not sure why it's spinning there it is the error log as my error workflow so anytime that there's an error now in this workflow it will fire to my error log in discord so i'm actually going to activate this and this will take maybe a minute or so and what it's going to do is it'll fire because i've got the crown node it'll fire every minute and when it does it'll do two things it's going to set up my event log parameters and then send a message to the event log and then it's going to fire this function node which i've actually designed to fail so it will cause an error and when that error occurs that will then get automatically pushed to the error log and there we go and it will send that into discord so i'm just going to turn this off because if i leave it on it'll keep sending one every minute so as you'll see i got the base information going into the event log uh the title i can easily modify the message all of this information in here it actually automatically grabs from variables that are pushed to it from the event log set node so all of this you don't have to change it it'll just grab it and send it out similarly here's the error log and it goes right into detail as to you know what what uh node uh caused the the note type that caused the problem uh what part of it is the issue here's the values of the keys uh here's the um the name of the error the message that was sent the stack error and then it even gives you a url link so that when you click on it will fire up the actual execution that caused the error within n8n and then we go oh right there there's where the error is and you can go in and look at it so it's very quick and easy to uh to be able to uh dig up all this uh this information and you're aware of it right in real time um you can even have the clients running on your phone and it works just fantastically so you'll get a message you're on the road you can check what's going on and get it resolved rather than having your client tell you that it hasn't been running for the last two weeks um i think i saw a question here earlier somebody was asking uh is there a particular reason that i'm using discord uh yeah uh first of all um harsha's my hero i wanted to be just like herschel so i decided to use discord because of all of his stuff the other nice thing about discord is that there's no cost associated with it you can create your own discord server and it um it doesn't cost you anything and it's super easy to program uh with any n a single node and a way it goes uh so it takes seconds um to do that type of stuff uh let's see what else do any other questions uh what kind of data are you uh data you think are really important for event logs can you share some light on this so there is um really i use event logs for something that would be critical so if i'm going to be for example uh sending data over to another system and i want to make sure that we reach that point i'll put an event log saying yep this data has been sent over to this other system into air table or what have you and it'll allow me to go in and see what's going on from that perspective i'll often do things when let's say for example it's something that doesn't happen very often and we want to be notified of it so for example if i have a flow that will turn lights on and it doesn't usually turn lights on or maybe even let's say it's a motion sensor outside that's a great one to send into your event log because you know the light comes on well somebody's out there you get to see it and it sends you that alert right away um and again anything that you would look at uh digging in and uh finding out just how things are working just to make sure they are and sometimes you know when you get no message that's good news sometimes it's bad news so you want to make sure that you can see see that as well for those of you who are interested in learning a little bit more about this here is the blog post i'm just going to plug it right into the chat and you can go and take a look at it all the codes there everything uh that you need you should be able to figure it all out from there if not you know where to find me i'd be more than happy to give you a hand and harshall i think it's back over to you

### Office Hours [55:35]

awesome thanks jason that was really wonderful and very helpful uh and i'm looking forward to you know implement this for my own workflows as well from now so that was really a good practice that i think i am going to follow for now so once again thank you everyone who joined in and thank you to all our speakers for taking out some time and sharing their knowledge with the community we are now moving towards the end of a meet up and we'll start with our office hours where you can ask questions to our speakers or to the team now if you have any questions once again just send in the chat and i will ask them for you so yeah looking forward to all the incoming questions all right so in the meantime we have we get some questions coming in jason uh i was curious to know you know if you could uh share some uh insights on when this was this kind of thing is really helpful you know to get an event log maybe say one or two of your experience uh so quite often um i've used uh event logs in my former lives where i was running like i t infrastructure and so on if you're monitoring a lot of different systems you know often you'll find that you know there could be some signs of things that are happening ahead of time before you get a failure and you can prevent them from happening if you get them sooner so for example if your server let's say runs that typically like a 40 or 50 capacity and then all of a sudden it's running now for like two days at 80 or 90 capacity there could be a bug memory leak there could be a virus on this system there could be all kinds of things going on that would you know cause that and to know that early on so you can go in and take a look at it before it actually causes more problems that's definitely worth doing um again anything that you really feel is something that you want to know about that's running on the system or you know like uh like we say like alarms are great you know if you have motion sensors those work really good um if you're looking at some of the workflows that you're working with um you know i've i do stuff where i do a lot of forms that people will fill out it's kind of nice for me to see oh hey somebody filled out this form you should have new data in your system it's kind of nice to kind of get that alert going oh okay so you know i should go and check that out so if you want to be able to respond quickly it would be great for like a call center if people are trying to um you know they have to reach out for tech support and this way you can get the alerts that ticket has been submitted and you can go and let them know that so it just speeds up some of your processes there's thousands and thousands of different ways of using the event logs question thank you for that and we have one question uh that maybe max you can answer that so we have a question of where uh to have multiple users with own editing credentials and workflows sorry harshal uh you cut off there a little bit in the middle of that question if you could repeat that please all right so where do you stand with the ability for a shelf host for the self-hosted version to have uh multiple users with own editing credentials and workflows sure thing so we are currently actively working on user management functionality in n8n i would say strategically this is sort of the big feature that we're working on this quarter the design works done we're sort of putting i guess keystrokes uh to files and coding it out so the mvp of that feature will allow multiple users to have accounts on an instance to log in to create their own workflows and credentials and then mvp the minimum viable product to be able to optionally share those workflows with um other users and also for credentials as well um and so the way that will work is um sort of a i would say a google drive style sharing um where you can share at the workflow level a workflow with one-to-many users and set them a role and then for the mvp and credentials there will be um the ability to share the credential itself um but so those users will be able to use that credential but not be exposed to its keys and private data and whatnot um so that's going to be getting rolled out to all users and then from there we're going to establish a roadmap for user management where we'll add things like groups various um things like 2fa and all these other kind of features that people have been requesting but um so that we're not blocking that feature from being released we're going to be sort of prioritizing the minimum viable product produce management that will get rolled out and that should allow that should really satisfy all the sort of pain points about saying do i have to roll my own kubernetes cluster and set this all up um no we are working on that um so in combination with user management right it's already possible to sort of have a horizontally scaling workers with a reader's database so i'd say when user management does come out for those users who want to self-host and have a performant instance that can handle a lot of workflows a combination of setting up um and with sort of that horizontal scaling of workers and user management is going to be the ticket there um from there of course like i said we'll have a roadmap but we'll keep releasing features to user management so things like groups and whatnot will come um and i don't have an estimate on that but as i said the design work there is done and we're actively coding it out it's a non-trivial feature part of what we'll be doing as we're doing this is assessing if there's any tech debt for anything to refactor as we're touching it so we're kind of going to do it right first time around to release that but um what i can say is this is like the big strategic priority for us this quarter we got a lot of engineering resources focused on it so we've got some smart brains working on the case and that should be out sooner than later awesome so i am really excited i think a lot of people are excited as well uh i the next question is for yan so yan uh it would uh ask it would be great to know if there is a new feature that would be uh most helpful for activists um features for activists i mean uh to be honest a lot of it is around the user management stuff um the way we're thinking about it is about um autonomy in your sort of in your kind of workflow management so instead of having to have someone who's uh you know respond who you're who is responsible to your technical needs you have a bit of like self-serve in there um but that doesn't necessarily the problem for us is that you know it has to also uh articulate with sometimes quite strange weird systems um or kind of bizarre configurations of google sheets and like weird you know non-standard um kind of tooling setups so firstly that kind of user management stuff which is uh coming down the road which is super exciting um and perhaps after that you know i guess it's about the kind of visibility of stuff so beyond editing one thing that we've i guess we've pushed a tiny bit on the forum and we're still looking at other tools that could do this is visibility over workflows that can go that can be visible to like quite a large um non-technical group of people say uh especially in current various times a lot of automations kind of run organizational functions so say membership sign ups or like newsletters and responses or weird like notifications here and there if those fail that's you know in a business that would be you know possibly someone's responsibility and you know there are tools that do that kind of stuff like um monitoring workflows is part of someone's job that kind of same visibility stuff is important for us but we also wonder how that can be uh almost more democratically accountable i guess so you can make sure that always happens um yeah some stuff awesome thank you for saying that uh and i there is another question anyways anyone has any suggestions to work with external api limits on any time so assuming that's what the rate limit node would help with especially when working with google sheet or youtube or calendar api image okay i am gonna take this so if you're using a node for google sheets or youtube or calendar we already manage the rate limit for that so you don't have to worry about that but if you're using any api uh which has sort of a rate limit uh the general practice over here is to you know like is make the http call get that response and in that response uh mostly uh the apis that i have worked with they also give you the limits uh like how many calls you have consumed and how many calls are left so based on that then you can structure the logic and you know uh maybe using the weight node or wait for a few seconds and then make another http call to the next uh page so that's how you can you can work with the external api's limits on anytime yeah just to add to that what i can actually do since i had anything open from the demo was just quickly contextualize what partial was saying um so um in in principle what's going to happen if um a http request really any node returns a 404 or some sort of error the workflow will stop by default what you can do is in the settings of any node you can check this continue on fail so now we don't treat that 503 404 whatever it might be as an error we treat that as a payload response work for executing so you could do in that case you would get an if node and then if you know that the rate limit is a particular type of error you'd use the if node to check if the payload of that data was an arrow and if it was at the moment you could use a function node and write a simple sleep function there maybe it's a thousand milliseconds maybe it's a minute um and then um uh sort of route back etc with the weight node that'll be a bit simpler now this is obviously a very high level example you might have to do a bit more manipulation of the data first before you send it back or something like that but that would be sort of the homeworld strategy for that and then what harsh was talking about before that is we do have a retry on fail which is sort of a more simple version where you could check this you could check how many retrials you want to do and then you know check the how long you want to wait between retries and milliseconds so that's kind of the two strategies for thinking about um how to do retry logic with regularly and then a third thing there also um if the rate limit is simply based on just too many items another strategy would be to use the splitting batches node um and what you could do there is set a batch size um run your function let's say maybe hubspot has a rate limit um you would set up your hubspot node we would then maybe with the function node or when the weight node comes out the function node maybe you're having a quick sleep function has a thousand millisecond delay or something you could follow patents such as this um if you don't know how to write a sleep function if you go to na nio um in our workflow section i believe by searching for sleep you'll find a workflow there if memory serves me correctly that's even uh contributed by teflon and jason from our community so thanks for that jason back to you awesome and a question on top of that is batches is like a task queue so what uh batches does is batches would uh break your item so let's say you have 50 uh items coming in and you use the split in batches note to uh create a batch of 10 items so what it would do then is it would first get the first 10 items do the process once that process is complete it batches the next 10 items again do the process and you know this is how it's going to simply break it break the incoming items into batches and then move it forward 2010 i hope that answers your question moving forward to the next one is uh then i would like you to answer this are there any courses or books to master any ten code notes okay so for courses uh actually this was one of the things that we were working in the last quarter i'm gonna drop a link here uh this is something we actually pushed to production in the docs today so we added one course on uh it's sort of a big news course and uh yeah like you could uh go through a case study that we added and learn about the concepts of natin and over this quarter we are also planning to work on more advanced levels so uh we're going to cover uh the core nodes uh in details throughout these courses so i would say that would be a good start and since this is a new course if you go through it if you find that something isn't covered in too many too much detail or something is confusing something that you'd like us to add please feel free to share your feedback in the community or discord i would love to learn that what you'd like to see here as well but more courses in coming as well stay tuned on our social channels and community will announce there as well regarding books so jason and i are working on a book on naden where we are going to teach you how to build apis products with na10 while it specifically doesn't specifically cover code nodes but we do have a lot of we do a lot of things with go nodes there we function node uh merge nodes and so on um so we're gonna i think make an announcement about that soon as well um so like it says you'll hear about it soon awesome looking forward to the book uh since i already have a sneak peek for the course cool uh i see there is another question for uh can we edit image with any 10 i want to use anytime instead of panopia for simple adding text to image or adding image over image so you can do that so we have an edit image node for that and we internally we also use it uh to create some graphics for our social media so that you can do all this with ntn so the edit image node is what you are looking for over here and one more question i see is the recording of the webinar where are you going to upload it to watch it so we are going okay i see max is already answered so we are going to upload it on our youtube channel uh and i will be also making uh sharing it on our discord as well as on our twitter whenever it's live on youtube so you can always check it out awesome do we have any other questions any feedback or anything that you want to talk about because i have some interesting questions for you all right in the meantime you folks are sharing it i would love to know you know uh since we have released the tags version you know the ability to add tags to your workflows what is the maximum number of tags that you have added to a workflow okay i see three i see four interesting five that's nice okay and i am gonna assume that's not true but maybe for your use case it might be but if it's true i would really love to know you know which are those hundred uh tags that you use okay all right so once again thank you all for joining in uh and i hope you all had a great time i saw it did we are gonna share this video on youtube so we will uh share that link on discord as well as on twitter so you can always check uh be updated when it's out and yeah if you haven't joined the discord server i am just sharing the link in the chat feel free to join in our discord server where we can continue our conversation there thank you once again everyone for joining in and have a great day
