Once a contract is signed, you need to create projects, repos, kickoff emails, and more — but that admin work can be automated! Learn how to build automated workflows with the DocuSign API.
Once a contract is signed, you need to create projects, repos, kickoff emails, and more — but that admin work can be automated!
Learn how to build automated workflows with the DocuSign API.
Resources & Links
Read the transcript
Captions provided by White Coat Captioning (https://whitecoatcaptioning.com/). Communication Access Realtime Translation (CART) is provided in order to facilitate communication accessibility and may not be a totally verbatim record of the proceedings.
JASON: Hello, everyone, and welcome to another episode of Learn with Jason. Today on the show, we are learning how to automate away all of the busy work that makes it suck to own your own business or to work as a contractor or to work in an agency all that stuff around contracts, setting up until projects, it takes a ton of time, it's never fun, it's usually clicking a bunch of buttons in programs to get your projects scaffolded. We're going to make it go away. We are joined by Raileen Del Rosario. How are you doing?
RAILEEN: I'm doing good. Looking forward to this.
JASON: Why don't we kick off hearing about you and what you do.
RAILEEN: Yeah, so my name is Raileen, I've been with Docusign since 2022. I'm a developer, advocate, and programmer/writer. That means, I try to make tools for developers to make their life easier. And this is one of them today.
JASON: Excellent. Well, I don't want to waste anytime, I want to jump into this and get coding. Welcome, everybody, to Learn with Jason. All right, we are sitting here, we're looking at the home page -- actually, we're looking at Raileen on LinkedIn here. First and foremost, make sure you go give Raileen a follow, that is the right place to hang out. I also have the Docusign for Developers page open, so I'm going to throw that up on the screen, as well. And then, I am going to just throw to you. If I want to get started with this and I want to try something, what should I do first?
RAILEEN: Yeah, let's jump right into it. So if you -- there is a -- a link I sent you earlier, the workflow link to get to that, though. You would click on your -- you'd have to sign back in. We're going toer start building our workflow.
JASON: I'm going to skip for now because we want to be working. And that's the wrong place. Let me grab the link you sent me. This is my actual.
RAILEEN: Yeah, if you click on the agreements tab there on the top. That workflow.
JASON: Oh, here it is.
RAILEEN: There you go.
JASON: I do for CodeTV, Docusign is what we use for our contracts. So this is my actual account live and in it. It's new, how long has this been out for?
RAILEEN: I want to say this has been out for maybe two -- almost two years now? Yeah.
JASON: Great. Great. So, something that we can rely on, it's not like brand new like going to change?
RAILEEN: Yeah.
JASON: I'm ready. Let's maybe talk about what our plan is today.
RAILEEN: Mm-hmm.
JASON: And we'll jump in and do it. I'll let you take the lead on -- what should we try to accomplish?
RAILEEN: Yeah, so there are kind of three, four-ish big parts of what we're doing today. First one is building a Maestro Workflow. Second one is building, creating the web form that we're going to use in the workflow. So those two are kind of our big UI tasks today. And then, the second half is building a quick little server to trigger that workflow programmatically, right?
JASON: OK.
RAILEEN: And then, after that, we are going to look at maybe doing a notion integration after this.
JASON: Nice. Yeah. So that's -- we're calling our shot, we're going to see how far we can get on all of that? Do I start by hitting this Create Workflow button?
RAILEEN: Yeah, create workflow, and I would go blank workflow on the -- oh, my gosh, left and right, right. [ Laughter ]
JASON: OK. I'm in -- we're loading up my Blank Workflow. Close things down -- uh-oh, no, that's right,.
RAILEEN: Yeah. Yes.
JASON: Workflow Start.
RAILEEN: That's the first thing. Few options here from Maestro, Event, or API call. Today we're going to do from an API call. But you can see, yeah, go ahead and scroll down. This is a little explanation on when you would use this. Since we're building this into the server triggering it program gnatticly, that's why we're doing it through an API call today. Lots of options. Go ahead, nice. Now we are going to set up the starting variables, right? This is a quick and dirty way to do it. And there's going to be two text variables we're going to use which are developer name and developer email. And usually, you can, you know, prefill this if you use like a prefilled tab or something like setting a config file right in your server, you can prefill this stuff. And then it'll actually be your developer name and actually your email.
JASON: OK.
RAILEEN: Yeah, go ahead and hit next. And we are starting this human, right? And so the reason we're picking human is I also want to show how to trigger this via the UI, as well.
JASON: Got it.
RAILEEN: That's why -- when you pick human, you kind of have the option to do either/or. I like human just so I can test. So go ahead and hit apply.
JASON: OK. We've created something from an API call.
RAILEEN: Mm-hmm, yeah. Well, so, actually this is the start method. So this is telling the workflow, hey, when the API call is triggered, right, then we're going to kick off the workflow.
JASON: I'm with you.
RAILEEN: Yep. Yep. Go ahead and hit add a step there. Nice. And then, collect data with web forms. Next step we're doing.
JASON: OK.
RAILEEN: After this, we're going to jump into configuring the webform. So go ahead and hit configure so we can see here. Let's see. I wanted to do, yes, that's my favorite thing to see. So create a new webform, you can go ahead and click that. Because then, I don't have to click around the tabs and things. >> JASON: Yeah.
**RAILEEN:** And we're going to create a webform.
JASON: OK.
RAILEEN: Awesome. And then --
JASON: Do we want to use a template?
RAILEEN: We're going to start from scratch today, do a form, fill it in, so we can see this kick off.
JASON: All right. What should we call this one?
RAILEEN: Let's go ahead and call this Collect Client Info. Call it that.
JASON: Collect client info.
RAILEEN: Mm-hmm.
JASON: Got it. Had.
RAILEEN: Hit apply. Awesome.
JASON: OK.
RAILEEN: All right. We've got our -- yeah. So awesome, we are going to actually do three sections for our webform. So you can see on the outline here, welcome page, title page, thank you page. Head over to the untitled page first and we're going to change that over to -- what was I calling? Client and project information. Yes. Awesome. And this is -- yeah, we're going to ask a question. And we're going to do a text field, actually, this time. Real quick before we jump into this, pointing out a couple of things. We can put in for the field name client name, right? So this is, you know, the title so the client knows what to put in. And we're going to make this a required field. You know, because we kind of need their name to do the rest of it, right? And then, we're going to head down to API reference name. So this is the part I want to point out that's pretty important, we want to make sure that the API reference name is the same. This is what I was talking about earlier in the podcast when it comes to spell check. This is how the workflow identifies what value is what and how you will, as well, when you have the workflow. So when you put something like text box, if you kept it like that and you're trying to associate fields with data and you have let's say ten of these, oh, my gosh, good luck. You know what I mean? >> JASON: Yeah.
**RAILEEN:** This one, we're going to do client case, single word, client name.
JASON: Client --
RAILEEN: Capital N-A-M-E.
JASON: Got it. My brain shorted out just now.
RAILEEN: You're fine. Totally fine and then, there's a few, will the me send this over because there's a few more little -- oh, my gosh, variables that we want to use. Let me pull that up.
JASON: And am I adding more fields here?
RAILEEN: Yes, you'll be adding more. Go ahead and do -- you can get started on the client email. Let's do that.
JASON: Can I use an email field?
RAILEEN: You can. This is our data verification field that's built in, it'll check there's an @sign, dot com, things like that. That's going to be a required field, as well.
JASON: OK. And we'll make this one client email I assume?
RAILEEN: Mm-hmm, that's right.
JASON: OK.
RAILEEN: Yep. And then, the next one, we're going to do on the next ones we're going to do on this page will be agreement name.
JASON: Is that just a text field?
RAILEEN: Yeah. A text field. And yeah, same thing, this is -- we don't have to make that required.
JASON: OK.
RAILEEN: Another thing I want to point out, too, these fields can also be auto-filled from an e-signature template. Not a template, but an agreement. If you have the client name. As long as the variables stay consistent, that API reference name, it'll know exactly what you're talking about.
JASON: Got it.
RAILEEN: And then, yeah, then we are going to do -- let's do Agreement ID, as well, and that one will also -- let's make it a text field because there are letters, sometimes, in the ID. Awesome. >> JASON: And that one will be -- Agreement ID, cool.
**RAILEEN:** Yep. Awesome. All right. That's our client info page. So let's go back to that left side outline and let's hit that purple plus and add another page. A new blank page.
JASON: OK.
RAILEEN: And call that one Project Information. And we're going to do.
JASON: Do we need a reference name in here?
RAILEEN: We do not. This is the -- this is just telling -- this is the reference to the actual page, right? So this is not something we're going to call later.
JASON: Right. So we're not worried about the form, we're worried about the data being input into the form?
RAILEEN: Exactly, yeah.
JASON: I'm with you.
RAILEEN: All right. So we're going to do two text fields here. One of them is going to be Project Name.
JASON: OK.
RAILEEN: Make that required, too.
JASON: It's required. And then, project ID?
RAILEEN: Repo Name, actually.
JASON: Repo name.
RAILEEN: If we want to build in the GitHub integration.
JASON: That one's required, as well?
RAILEEN: Yeah.
JASON: Repo name, camel case, both are required, OK. Anything else?
RAILEEN: Yeah, we've got two more, and then we've got -- three more, sorry, and then one more page after that, which is going to be one field. Nice and quick. So next one we're going to do is a text field. >> JASON: OK.
**RAILEEN:** Let's call this Intake Notes, and this is in no particular order, just kind of, you know --
JASON: OK.
RAILEEN: Not make that required, let's do long text. And then, let's do that -- that API reference name, let's do Intake Notes, again.
JASON: OK.
RAILEEN: And then, the last one on this -- two more on this page, sorry, Price, which will be a number also required, and then, I'll show you how to do a dropdown after that one.
JASON: OK. So Price is going to be -- price. Is this one required?
RAILEEN: Yeah, let's go ahead and do that, yeah. Awesome.
JASON: OK. And then, one more. And you said a dropdown?
RAILEEN: That's right, yeah. And we're going to call that Package Name. So this is, you know, what did you sign up for? So, again, like pointing out here that this can be read only. You can auto-fill this from your end as the sender, the price, the package name, and you can set it as read only so the client can't change the price to $1 or something like that. All right. So, yeah, the three options, let's do this. Let's just do starter and standard premium, and let's just, yeah, match that API value. >> JASON: Premium.
**RAILEEN:** Awesome.
JASON: OK. We've got our -- starter standard premium.
RAILEEN: Yeah. You can set a default, too, if you would like and this just shows, like, if the client, if you know the client is a starter package client, they don't have to click anything. Save them a click.
JASON: Got it, yeah, cool. Let me double check, API reference name is Price, Intake Notes, Repo Name, and Project Name and one more section?
RAILEEN: Yeah. One more section, and let's call that, that page Ready to Kickoff?
JASON: OK.
RAILEEN: Nice. And let's do a question, let's do a check box and let's call this one, let's do "ready?" This is our in the loop gate to make sure we don't need manual review. We can call that ready and then let's do the option as just one option, and we'll do "yes" for that. And you can call this one, too, just Ready to kickoff" or, yes, yeah, either one.
JASON: Oh, I got it, sorry.
RAILEEN: No worries.
JASON: OK.
RAILEEN: All right. And then, let's hit the default value.
JASON: Set the default value.
RAILEEN: To that, yeah. Let's default they are ready to kick off.
JASON: Got it.
RAILEEN: All right. And then, that's your webform. You can save it, and then --
JASON: Oh, it auto-saved for me, that's nice.
RAILEEN: Yeah, that's nice, especially when I have a hundred tabs of these open and forget to save. Yeah, we'll activate it.
JASON: We're going to make this one public so we can use it.
RAILEEN: Yeah, and so this is our -- this is what the webform looks like, if you want to click through really quickly, we don't have to fill it out now because we will later.
JASON: Got it.
RAILEEN: Yeah, that's what it looks like. We can head back now over to our Workflow Builder.
JASON: This one?
RAILEEN: Yep. That's the one. Go ahead and hit X there, cancel out of that step, configure, and it's --
JASON: It's going to load up the new forms, client info, hey.
RAILEEN: Nice, perfect. And participants. We're going to add a participant here. And let's call this client. You can call it pretty much anything, though, it's just how you identify them.
JASON: OK.
RAILEEN: Let's also add another participant.
JASON: OK. Do I do -- oh, I got it. OK.
RAILEEN: Let's call that developer. Just in case we need to associate those starting variables we sent -- we set up earlier. And let's do client, again. Yep. Continue to map data fields, and this is kind of -- the critical part, to make sure the automation works, right? Is making sure that that the client name and the client emails are associated to the right field. So if you go, let's see, let's go to -- hit the plus there. OK. I don't see it, but that's OK. So let's see. Collect data with webforms. Go ahead and scroll down to project info. Is it the same? OK. >> JASON: Looks like it's not picking up the thing. Do we need to refresh?
**RAILEEN:** Yeah, yeah. That's exactly what I was thinking. We can hit cancel.
JASON: Cancel. Let me save my draft. And -- what -- do we have a -- did you have a set name for this?
RAILEEN: Yeah, Contract Admin Automation.
JASON: OK. We have saved the workflow draft. I am reloading the page.
RAILEEN: It should have opened for you there.
JASON: OK. Let's configure that, again. Get this one next. Get our client.
RAILEEN: Hmm, interesting. Let's do -- go to -- hit next. Go to participant. There.
JASON: Participant. Participant? Yeah?
RAILEEN: Let's do, user who starts this workflow. And see in that helps. Nope. Not quite. No worries, yeah, this is the tricky thing with the variables. But let me pull this up -- let's actually go ahead and test that webform really quick. Click on that link and -- let's fill it out.
JASON: OK.
RAILEEN: See what happens.
JASON: You want me to fill this out?
RAILEEN: You can just do Test Agreement, and yeah, exactly.
JASON: And the Project Name is going to be -- is the repo name like do we want this to be a real thing?
RAILEEN: No, we don't have to, we can just do test real quick. We're making sure this is going to grab the variables. This is -- whenever I do workflows, this is sort of my first step when it comes to debugging the automation is checking the web form and making sure. Yeah, hit next.
JASON: Got it. So we have filled out the webform, I'm going to hit use. Or wait, why does it say --
RAILEEN: Oh, no, let's edit our form.
JASON: Edit form.
RAILEEN: Thank you page -- not quite. Let's activate it, again, then.
JASON: Activate and replace, that's fine.
RAILEEN: Go to web forms, OK, looks good to me.
JASON: Does it show -- is there a way to see, like, the responses?
RAILEEN: Yeah -- yes. Let me pull that up. So yeah, go ahead and hit that Kabob menu. I thought that was funny. It's like, I did not know people called it that.
JASON: OK. But I think we haven't -- does that mean we haven't seen, no results. So that didn't go through.
RAILEEN: Yep.
JASON: That's OK. We know how to make that happen. I need to go back to templates.
RAILEEN: Take a look at our variables, again. I'm going to pull up mine real quick.
JASON: Maestro Workflow, and going into this one?
RAILEEN: That's right.
JASON: And we're going to use this Collect Client Info.
RAILEEN: Hmm.
JASON: Should I try to use the form, again? And see if --
RAILEEN: You know what? Why don't you hit apply here? Because the map data fields, I believe, is optional for this step. Nice.
JASON: OK.
RAILEEN: And then, we can just add the branching step real quick and go back to it. So, yeah, let's do branching rule real quick. And so, you can see this is our true false, right, what happens if the client's not ready. So also, you can change the names of these steps, too.
JASON: Got it.
RAILEEN: Let's see. That's what you can see here.
JASON: Here they are.
RAILEEN: Yes. Exactly. And if that is true, done. That's it. I also like to check merge true and false branches because at the -- you know, at the end of this whole thing, ideally every client's going to end up in the same place. Or the client is not interested in moving forward, right? If they need to review, something like that. That's why it merges there at the bottom. >> JASON: Basically, this is like if they check false, then we need to kind of send them back to review, whereas with this one, we continue them down the line?
**RAILEEN:** Exactly, yeah.
JASON: I got it.
RAILEEN: Exactly. So if you -- let's go ahead and check on our web form, again, see if that loaded in.
JASON: All right.
RAILEEN: Hhmm interesting, if you do /clientname nothing comes up? Yeah, let me check on this. But in the meantime, let's go ahead and add the branching steps and we can add those variables in a second. Because we know that it's reading the workflow variables at that step, it's just not doing it in the earlier step, which is one of those things where it can be because, you know, the client hasn't inputted the information yet. So that's part of it. But yeah, let's just add a step. >> JASON: Gotcha. Yeah. OK.
**RAILEEN:** There's going to be two steps under this truth branch and they're both going to be send an email. I also want to point out, too, all of the different steps you can add. And this is like the very -- this is a new account, it's pretty empty, OK? So if you add things like a Google Drive app, if you add your own extension apps, those will pop up on the steps, as well.
JASON: Mm-hmm.
RAILEEN: Yeah, so who do you want to do this first email for? You want to notify the developer that the contract -- or that the client's ready to kick off?
JASON: Yeah, let's do it.
RAILEEN: Let's do it, yeah. I would also change the step name to something like Developer Notification so we can differentiate between the two.
JASON: OK. And then -- for subject, we can do something like client name, signed -- agreement name or something?
RAILEEN: Yeah, there you go. Yeah, it's super -- you can do a headline. That's the subject line, I guess, on the top of the page. But yeah.
JASON: Nice.
RAILEEN: Any of those variables will fill in that you put from -- that you select from collect data from web forms.
JASON: Great. Yeah, that's perfect. We can do like, hi, Developer Name, new project started -- I'm just, I think, something super simple here.
RAILEEN: Mm-hmm. Get to it, yep.
JASON: OK. So, let's -- that's one. And then, two, I assume is let the client things are moving?
RAILEEN: Yes, exactly. So, the client email, which is usually, hey, this is the package you picked, right, this is -- we're getting started, we're, you know, couple other, like, little things, too, is like adding like a Calendly link. Yeah, that's that one. I have a suspicion it's a check box.
JASON: OK. I can't do that, that's fine. This is fine. Oh, that's handy, if you type the slash, it pulls up the auto-complete for you, which is super nice.
RAILEEN: Yeah.
JASON: Yeah. If you don't hear from --
RAILEEN: See this --
JASON: OK. So that's a basic client notification email. I assume if it was real, we would give -- we'd give useful information, but -- not going to stress about it.
RAILEEN: Right. Exactly. Let's go over to our false branch and configure that. So this is also going to be an email. Because we're going to be emailing the developer, hey, you've got to take a look at this, the client is not ready to kick off. And we want to know why so we can get started sooner rather than later, right? And then, we are going to send this over to the developer. >> JASON: Got it. And I think we'll just -- for this one, because we know -- OK. That gives us details.
**RAILEEN:** Yep. Yep. And.
JASON: Are we adding something else?
RAILEEN: No, once the edits go through the agreement -- or are done on the agreement, it gets resent to the client, the client signs, and then, the workflow's triggered, again.
JASON: Got it.
RAILEEN: Then, they'll be ready, we can actually go all the way down to the bottom, that bottom -- yep, and you can do, let's do -- show a confirmation screen is this one.
JASON: OK.
RAILEEN: Nice. And we're going to configure. And let's do client. Nice. I like to add the screen because otherwise, when you trigger the workflow and don't have this, it gets stuck in this little loading thing, it is really important to have.
JASON: Got it. And so, this is why it's important to have the fields mapped to this client?
RAILEEN: Yes, exactly, yeah.
JASON: So, then, how do we get that?
RAILEEN: Yes. Good question. I was wrong, you actually don't need to map the data fields. It will take care of that for you.
JASON: Oh.
RAILEEN: In those later steps. So -- because you need to collect the variables first, so --
JASON: Got it.
RAILEEN: This is the map data fields is specific to -- if you want to prefill things, right? So let's say you have the e-sign field, you can just pop that in. So for example, they sign, they fill out the agreement, then it's filled in the web form for them. They can hit --
JASON: OK. How does this participant -- how does this client get updated? Or is it the -- should it be the one who started the workflow?
RAILEEN: The client gets updated from the web form, right? We're not actually pulling -- the participant is sort of a labeling thing rather than a variable thingy. As I say -- so --
JASON: How --
RAILEEN: Yeah, go ahead.
JASON: I guess my question is, so we created this, and then, it didn't let us map fields to this client participant?
RAILEEN: Yes.
JASON: In the web form, so how does it know which field maps to which thing?
RAILEEN: So the client participant is actually -- it's not the field mapping, it's the identification of who is performing the task within the workflow. So for example, if you were doing something like you needed the, you're hiring someone, you sign the offer letter, then the HR person, and then the employee, right? That's where those participants are really important because then, you can set the routing to those participants. Me, I like to keep them this way so that just in case I need to add a step, I like to make sure everyone who is participating in the workflow has their own predetermined role just for clarity, right? >> JASON: I understand, I'm with you. OK. Cool. I apply this, we're ready?
**RAILEEN:** Mm-hmm. And we're going to review and publish. That's our workflow.
JASON: All right. And so that's saved. It's ready to publish.
RAILEEN: Yep.
JASON: Give each instance a new name.
RAILEEN: Yes, this one -- this is very customizable, too, so let's say you want to, you know, archive this to a folder or Google Drive or something like that, you can set it to something like project name, client name, and then, the date, any of those variable LGS we got from the web form, we can -- or from the workflow start, we can add that to whatever the file name or the instance name is. Me personally, I like to do like client name, project name, start date, and time, especially when I'm testing because I want to know when I did what, but that's just my preference. Very, very -- >> JASON: No, this sounds great. So we're going to roll with that. And then, we publish.
**RAILEEN:** Mm-hmm.
JASON: And -- let's see this is -- I just need to say, like, I'm allowed to do this?
RAILEEN: Yeah. Saying, hey, Maestro, you can send envelopes, you can send emails on my behalf.
JASON: OK.
RAILEEN: Awesome.
JASON: All right. So that's published?
RAILEEN: Yep, yep, go ahead and refresh. No, actually, it's all good there. Awesome. So I'm going to show you how to trigger this from here, and then, we're going to do an API call and see if we can trigger programmatically. All you have to do really is hit run workflow, and then you --
JASON: Start this manually, OK, we're going to do it like this.
RAILEEN: Mm-hmm.
JASON: We start.
RAILEEN: Again, these are variables you can set in a script and it'll just accept that. So, yeah, let's do it. So we're going to do -- we're going to do this twice. We're going to do it with the kickoff and without the kickoff, box check. So we can see those emails come through.
JASON: OK. And let's do -- one of those. And then, let's see, test project, we'll go with test project -- it's -- that'll be good. And so, first you want me to --
RAILEEN: Yeah, let's get this checked, and then we'll submit this.
JASON: There's my summary. I am happy it is all correct.
RAILEEN: No notes. We're good.
JASON: I've submitted and then, hey, there's my note that says it's all done. And then, let me pull up my email over here. I'm going to open it off screen so people don't have to look at the nightmare that is my inbox. [ Laughter ]
RAILEEN: Don't even get my started on mine. I should build an automation for that, but -- >> JASON: Wait. That didn't work. Come back.
**RAILEEN:** There we go.
JASON: There's the first one. And --
RAILEEN: Mm-hmm.
JASON: This is the client one?
RAILEEN: Yes.
JASON: You can see the two emails came through, I had them both go to my -- this one came to my actual email, and then, I used the plus trick to have it send to another one. So we can see it did, in fact, go to two different emails, quote, unquote. And that all of the automations worked as expected. So that's pretty exciting.
RAILEEN: That's good. Then, we can head back to that workflows screen.
JASON: Oh, there we go.
RAILEEN: There's our instance. Yeah, there it is.
JASON: That did the thing.
RAILEEN: Do start instance, too, at the top. You can do it through the menu, too, no, you're fine. That's the nice thing, there's a few different ways to run it. But yeah, hit run --
JASON: Same thing?
RAILEEN: Yep, same thing. Only difference here is we'll keep that box unchecked.
JASON: OK. And then, we're going to get this started, so now, I'm going to do the client part. And then, this is going to be test.
RAILEEN: All right. Nice. So far, so good.
JASON: We're cooking, and I'm going to uncheck the ready and hit next. And it says, we're not ready. So when I submit this, it should say I'm done.
RAILEEN: I always call this a demo curse. Whenever we go live, no matter how many times you test something, right, it's always, we're having trouble.
JASON: Yeah, and I'm wondering if it did not get me -- I'm not getting an email. So I think it actually did crash on us. Let me try to get back here. Unable to load form, OK. So let's -- find -- close that.
RAILEEN: Let's refresh this page, actually.
JASON: I got full logged out, OK.
RAILEEN: Yeah.
JASON: There's my workflows.
RAILEEN: Yeah, so you can see that's the one we just ran, there's an error, right? So we can hit view details.
JASON: Oh, I wonder if the error is that we made it required and it's not checked. So it's like actually crashing here.
RAILEEN: Oh, I see, you're right. Let's go back to that web form. See, this is why we test. [ Laughter ]
JASON: OK. I need to go back to the web form, which is going to be back here. And then, I'm going to go to templates and my web forms. And we're going to --
RAILEEN: Yeah, let's edit that.
JASON: Edit, edit, edit. No. Edit form.
RAILEEN: See, I had a feeling it was the check box. Didn't do -- it didn't do what I thought it would --
JASON: No, this is right. Select at least zero.
RAILEEN: Oh, you know what? Let's do -- go to your check box options.
JASON: Uh-huh.
RAILEEN: Click that, yep. And change this to the same very -- API reference name as the actual -- so I think it says yours is ready. Let's change that to ready.
JASON: OK.
RAILEEN: Nice. Let's activate that. And we'll jump back to the workflow.
JASON: OK. So that's successfully done. We're going to go in here, we're going to go in here. And we've got this one, and can I just rerun this?
RAILEEN: Actually, you can -- we're going to double check the config to check that branching variable to make sure it aligns. Yeah. So -- let's edit the workflow, actually. So if you go back to that -- the instance list screen you were at earlier.
JASON: Yeah, got it.
RAILEEN: And go ahead and hit the -- yep. Let's do edit.
JASON: OK. And here is this one.
RAILEEN: Yeah. True and then, go to your variable, again. Yep. And then, hit X there for it -- first -- yep. And then, go -- scroll down -- yeah, let's do that. True. >> JASON: OK. We're going to apply that.
**RAILEEN:** Let's hit -- let's check that, yep.
JASON: That's all correct. So -- that one -- well, hold on. Email -- oh.
RAILEEN: There it is.
JASON: Jeez, that's an embarrassing thing to get wrong.
RAILEEN: No, you're fine. [ Laughter ]
JASON: That, we're going to publish our changes. And now, if I go back here to our -- yeah, that's all fine. Is it possible, then, to reexecute that workflow to get it to run?
RAILEEN: Yeah, let's see. Yeah.
JASON: We'll go here, we'll go in. And then, I've got these. And can I just tell you to do it, again? Try again?
RAILEEN: See that hamburger -- oh, I guess not. We'll have to kick it off from the -- yeah.
JASON: All right. So we need to run it one more time.
RAILEEN: Mm-hmm.
JASON: And we are going to do that here.
RAILEEN: Mm-hmm.
JASON: So here we go. How are we doing on time? We're doing all right. We probably aren't going to get to the notion stuff today is my hunch.
RAILEEN: Yeah. Yeah, no worries. We can just -- I'll just show a brief overview of like a sample function I have for that.
JASON: Mm-hmm.
RAILEEN: So, yeah. Should be good.
JASON: It's ripping through here to get all of this done. And I'm unchecking -- I'm hitting next, and now, it should actually not explode. And it should say you are done, good, and I come over to here and when I pull this over, it says, hey, it's broken. And so, we can figure that out, and then, obviously, I need to do some stuff to like clean that up a little bit. But -- we are mostly in good shape here.
RAILEEN: Yeah.
JASON: So if I refresh this page, that did what we want -- and so, we didn't -- we didn't dig like deep into all of those things, but there were a ton of options inside of this workflow editor for like what the individual nodes can do. Should we look at those for a second when we do the API?
RAILEEN: Yeah. Let's do it.
JASON: Let's get in here and I'm going to come in here and add a new thing. And let's just kind of -- let's just go on through. So, we can do a web form, we did that part. But we've also got like signature templates, which is pretty freaking cool. We can send documents for signature, which is really cool. Because this is one that takes me a bunch of time. So when I'm working on a statement of work, there's like, everything's ready, but then, who's signing? What's their email? Does anybody need to be notified? This is the sort of stuff I'm doing manually right now. I already have a document that's ready for an e-signature, so I have to get that set up properly.
RAILEEN: Yep. And I want to point out, too, real quick, this prepared document template, that is probably my favorite step because you can take a doc-X like contract, and you can do like just brackets and it says the same API reference name for the field, like client name.
JASON: Like in the Word doc?
RAILEEN: Yeah and that's your standard, pulls that, customizes it per client, sends it for signature.
JASON: That's super handy, that's really, really useful. OK. So then, we can -- oh, if we need ID verification, we can do that. That's pretty dang cool. We've got the workflow, we've got confirmation screen. Bring in somebody else, which is also very interesting. If you're sending to your contact, but your contact needs to bring in accounts payable or the legal team, they can create branching logic on their own, I assume. Yeah, send this to the lawyer, the lawyer's in the loop, and they're doing red lines, like, again, just stuff that I'm currently doing that is a big pain in my butt. And so, if I -- if I browse this, will it show the other things?
RAILEEN: Yeah. So this is like our out of box like integrations, right? Again, you can build your own. We have a couple reference of limitations for custom ones, too, that you can take a look at on the Developer's Center. And we're always looking for ideas on more. So definitely let me know if you've got any. But if you wanted Stripe Payment step is a really cool one, right, if you want to send the invoicing out, organizing -- >> JASON: Across all of your different drive options.
**RAILEEN:** Yep. Yep.
JASON: Salesforce, yeah --
RAILEEN: It's pretty -- yeah, that's what I mean when I say, it can be intimidating because how big it is. A lot of people say, what do you use Maestro for? Well, what do you want to use Maestro for? It is a lot. It's a lot to look at and take in. So yeah. And I also want to look at, too, the start methods real quick. If you X out of this. And go back to your workflow that we were looking at earlier. Yeah. Let's do edit. Real quick. And then, we just won't save it or reactivate it. OK. If you -- yeah. Hit that. And then, go to the dropdown, the -- from the -- from where it says from an API call. >> JASON: Mm-hmm.
**RAILEEN:** From a link is another one I want to point out, too. Because you can dynamically generate this and also put it in an email to trigger the workflow -- from Maestro, we did that already, from an UI. From an event is one I've been playing around with recently, which is, I actually tried this for this one, which is setting an agreement. If it says agreement status, envelope status complete, trigger the --
JASON: Oh, nice. Yeah.
RAILEEN: So there's a lot of eventing you can put in. So if you click on that, I think we can pick a couple. Let's see. We just won't save it. >> JASON: From an event. And then, let's see, you can do it from when things happen with envelope, envelope is a contract, you can also have it do things from, oh, yeah, this is cool.
**RAILEEN:** Right.
JASON: This is great.
RAILEEN: Yeah, the workflow events, you can have the workflows talk to each other, which is really nice. OK.
JASON: That's good, too, because I feel like one of the things that's really hard with these sorts of processes is they can get really tangle-y if you try to do it all in one. But if you're setting up each individual thing as sort of its own thing, then you can have one workflow that's basically like, when this thing happens, kick off all of these other workflows, that's really handy.
RAILEEN: Yes, yeah, and it's all consolidated in that one spot. So it's very, very easy to find, you can run scripts to pull status. How we saw when it said error or failed, you can pull that and send a notification if workflow failed. Send an email, you know?
JASON: Yeah. So, one -- we're probably not going to have time to full blown build an API, but we can put together a curl call.
RAILEEN: Let's do it. JA ya why don't we do that? .
JASON: Why don't we do that? If I want to -- where is my -- I don't know what that is. Oh, boy, I need all of this to go away. Yeah, whatever it is. Yep, got it, OK. Bye. OK. So we're going to go to -- I'm going to go to the downloads folder somewhere kind of clear. If I want to send out a curl, where -- like how do I get the API endpoint that I would hit?
RAILEEN: Yes, you would get this from the API reference page. I'll actually point you to, back to the Developers Center documentation, let's go APIs.
JASON: OK. Maestro API, I assume.
RAILEEN: Yes, that's the one. You can do the API reference or how to, either one's fine. Let's do -- yeah, workflow. So, there's all of workflow management endpoints, right? So this is triggering the workflow. But before you can trigger the workflow -- it is what we want to do. But we want to see what we need to trigger the workflow. Right? Typically, it's something like instance name, right, something like that. We're going to start with that get workflow trigger requirements endpoint. And there, you can see, I think we've got the curl right there.
JASON: Measuring HM.
RAILEEN: Yeah.
JASON: And I'm going to need my token. Let me see. Is this going to work easily or is this going to be like a whole thing? Because I would love for this to just work. I also -- I saw Sterling was in the chat. So I feel like if I don't use postman, I'm going to get hate mail, and that's not what we're about.
RAILEEN: Threatening email. [ Laughter ]
JASON: OK, that's not -- I don't know what's going on here. We're not going to do that. I need to get my access token, though, which I don't have. But what I can do is paste this part here.
RAILEEN: Yep.
JASON: We're going to need an account ID, workflow ID, and then we're going to need an access token. And I assume I cannot show this access token.
RAILEEN: They are JWT, so they expire in like very quickly. For us, at least, when I do this, it's like gone pretty quickly. So sorry, get a new one -- you can show that one and we can delete it right away. So yeah, we can do log in. >> JASON: OK. I'm locking in. Logging in, maybe. I'm logged in. Yes. There we go. Absent keys, I'm going to keep the workflows page open. I'm going to the apps and keys center. And --
RAILEEN: Let's do -- so your API account ID is the one for the account ID that we see in the call.
JASON: OK. Let's fix that one. This is why I use Warp, by the way, so I can click and highlight things in the terminal input. And then, I need my workflow ID, which is that --
RAILEEN: Yeah. Couple ways you can do this. Yeah, you can actually -- go back to the workflows page. And then, yep. Let's do -- go ahead and click on contract Admin automation. Back to that screen where we see the instances. And you see in the URL of this page, there should be -- that's it, yep. So this is like kind of -- that's the workflow ID. So I actually did the same thing back in discover and one of my friends was like, it's a little hackie to pull the ID that way. I want to mention that there is an API call you can do, it's a get request that pulls all of your workflows from your accounts, if you want to do it that way. >> JASON: OK. And then I need to create a key --
**RAILEEN:** Yes. So go ahead and -- yep, add app and integration key.
JASON: Oh, here.
RAILEEN: Right there. You can call it access token.
JASON: All right.
RAILEEN: Thing this is kind of one of the parts that has a little bit more friction, too, is building the integration key. But it's pretty quick. So we're going to do this -- let's do -- private. Yeah.
JASON: OK.
RAILEEN: All right. And then, let's go ahead and -- let's go ahead and save the integration key at the very top. Yep. There it is.
JASON: Save this.
RAILEEN: Mm-hmm.
JASON: Do I need this somewhere?
RAILEEN: If you want to put it in notepad or something, that's fine, too.
JASON: I'm going to toss that over here for a moment.
RAILEEN: Nice thing, too, yeah, and go ahead and create a secret and save that really quickly, too.
JASON: Is this going to show as soon as I click the button?
RAILEEN: It is, yeah.
JASON: OK. Let me do this real quick. I'm going to just take the screen away for a second because my chat is notorious for being very fast at this. And so -- they may get us before -- before it is -- yeah. Let me, then, so I created the secret, I've got it in the clipboard and I need to allow for get and post requests?
RAILEEN: Yes.
JASON: Do I need any others?
RAILEEN: No, you are good. Actually, we're not doing core, so you don't have to check those. You can uncheck them. And --
JASON: OK.
RAILEEN: And save. There you go.
JASON: OK. Just in case it shows anything, I'm going to click the save button.
RAILEEN: Mm-hmm.
JASON: I've created my apps and integration keys, it is ready to submit, I'm over in Warp, I could probably find a way in Warp if I knew it better to mask this key, but I'm not going to do that. So I'm going to hit enter on this command.
RAILEEN: Yep. How's it going? Access token?
JASON: It said access denied but also command not found header, which means the way it's entered is not doing what we want it to do, which is actually very predictable because we didn't escape the line return. I'm going to do that one more time. Oh, Java is not in the right format. I've done that wrong. So let me bring the screen back up. OK. I've got my key.
RAILEEN: Mm-hmm.
JASON: How do I get it in the job format?
RAILEEN: Into what?
JASON: We need the JWT.
RAILEEN: Yes, the JWT token. So I'm going to grab the command to generate that access token for you.
JASON: OK. And I've got my integration ID and that secret key ready.
RAILEEN: Yes.
JASON: Off screen here, to make that call.
RAILEEN: Let me pull this up -- bear with me one second. [ Laughter ]
JASON: I know, I know you wouldn't, but you would use it to humiliate me.
RAILEEN: You know what, that's part of the fun, right? [ Laughter ] I get it, though, because when I see something like that, I'm poking around really quick. I'm very --
JASON: Right? Yeah. So this is -- no, this is great. So we've got -- and there is a link in the chat I'm going to explore later, so that Warp will let me hide those secrets in the future, which would be really nice for showing what the heck is going on. But today, we're going to get a little practice on my -- narration skills.
RAILEEN: All right.
JASON: OK.
RAILEEN: Sorry about that, I can't even pull it up.
JASON: All good. All good.
RAILEEN: Here's what we can do, we can -- I'm going to send you one real quick -- I just generated and then, I'll also send you the associated ID just so we can keep it moving.
JASON: OK. And what we're doing right now, you're generating a JWT for your own account, we're going to swap out the ID of the app in workflow?
RAILEEN: Yes, that's correct.
JASON: OK.
RAILEEN: But you know what, it is --
JASON: So in our case --
RAILEEN: Maybe we can do this. So I was going to bring this up a little bit later, but there is a repo for everyone watching, there's a repo of what we're doing today on stream, and it's kind of here for you as a post stream resource. And if you, Jason, head over to that repo, I did build, like, the authentication -- I built the whole thing, but there's an authentication of function in server.js, and then, you can just do that.
JASON: Let's find the authentication.
RAILEEN: Yeah, there's the build auth URL. And then, so, yeah, this is --
JASON: Here's the build auth URL, and here's all of the things that we need. OK.
RAILEEN: I know we're running low on time. Are we right on time?
JASON: We are at time. So we should probably -- but yeah -- so, the -- I mean, the long and short of what just happened here is we tripped up on not -- not on sending the API call, but on generating the JSON web token, which is like the secure way to send something through a curl call. And those expire really fast, so it's not like we can set that up ahead of time. And so what we would've done from here is the equivalent of running this function, basically. We would've hit the Docusign API and sent in our client ID in secret to get back a JSON web token, which we would've then put into the curl command that I found in here, right? This would have been that JWT, and that would've given us back the trigger requirements, which shows -- um -- choose an example. And that would've showed us here the input scheme.
RAILEEN: Yes, there should be a trigger input schema. Let's see -- there it is.
JASON: Trigger input schema, and there's the name and the email.
RAILEEN: Yeah, these are the fields you need to include in your request body for triggering the workflow. Right?
JASON: Got it. So name, email, and company.
RAILEEN: Yeah, that's what we're looking for. And it looks a little different in server.js file we have, if you want to see this with just curl calls, there's a how to article in the Maestro section that's specifically how to trigger -- yeah, if you head back to APIs and hit Maestro API, again.
JASON: How to.
RAILEEN: How to and how to trigger. Yep. Whatever language you like, whatever your flavor is, if you like BASH, Ruby, up to you. This is kind of a good resource for it, OK.
JASON: Okay. So this is -- this is partially on me because I typoed that form name where I didn't do the -- I got the name instead of the email, I also was very kind of enamored with the workflow thing and burned some time in there. My bad, everybody, we didn't have time to get this all the way done. I do think there's probably a world where we could do a part 2 on this and actually get to the notion integration. Because I think that would be super fun. So for now, we're going to leave you with some additional resources. You'll find these in the show notes for the show. You will also find them on the CodeTV Discord, which I hope you'll come and join us. We're fun over there. And you can always find this show as well as the companion podcast episode on the webdev Podcast at CodeTV.dev and you can find Learn with Jason on YouTube. Make sure you like, subscribe, do all of those things. Raileen, do you have any final words for us before we wrap this one up?
RAILEEN: Yeah, same thing I said earlier, please, please, please reach out. Let me know if you have ideas, we're super, super interested in hearing how you're using the tooling we have and we want to make it easier for you. You can reach out on LinkedIn, which I think was linked earlier. You can also reach out on our developer community and visit our Developer Center. So we have a lot of ways, lots of touch points, and we are here to help. So if you've got questions, if you want to see the notion integration, if we want to do a part 2, or you want to see a part 2, definitely, let us know.
JASON: Yeah. Go hit -- there's a whole community section on the Docusign Developers site, head over there, check it out and get stuck in, y'all, I hope you find yourselves doing a lot less busy work after this one. This has been another episode of Learn with Jason. Make sure you check out upcoming episodes and you can watch the back catalog on CodeTV.dev. Raileen, thanks for hanging out with us today. We'll see you all next time.