Create a custom CRM system
Full Transcript of Video
In this video, I’ll show you how to create a custom CRM system that …can be built to perfectly fit any business…includes workflow automation…integrates with third-party invoicing systems…updates an ERP system…runs over your database…and more…all in less time than it would take to deploy an out-of-the-box solution.
I’ll do all of this in about 40 minutes using low-code software…and if you’re at all considering a custom CRM, low-code tools are perfectly suited for this type of project. They can deliver something that’s custom built to your needs with all of the features you’ll need in a CRM, they’ll make it fast–you can create one in days with the right tool, and they can save money since you can roll out a custom CRM to your entire business without paying user fees.
Before we build it, I want to show you what we’re building. I’ll walk you through a demo here, but first let me start off with a birds-eye view of the system.
I’ll be starting with 3 main database tables–contacts, companies, and deals. I have a few smaller tables that I’ll tie into these main tables, like notes and salespeople, but the main work will be over these three tables.
So, over each table I’m building database front-ends to view and edit this data. I’ll also create nice single view applications for individual contacts and companies, and include some useful information like notes and even deals on the company screen. And of course, I’ll link all of this together so users can easily navigate…and tie everything together with a home screen.
Now the really powerful part comes into play with the deals. We have some custom workflow elements in the form of a customer onboarding process. When a new deal is submitted, the system will generate a contract, send that to the customer. When that is signed, it will send the customer info to our payment processing software, Stripe. And finally, when the invoice is paid, it will update our ERP system and notify the salesperson.
That’s the high-level view, now let’s dive in and take a quick look at the CRM system we’re building. One thing to note, I’ve included a link to this CRM demo below the video if you’d like to play around with it on your own.
Okay, let’s check out what we’re building. This is for a fictional consulting company but you could build a CRM with this approach for any company type. Here’s the home screen for our CRM system. Keep in mind…this is all custom. So as I go through it just remember…it can be designed and created however you wish.
The home screen is fairly straightforward. I have some charts up here to track deals by salesperson and then overall sales totals, and I have my data down here in tabs. All of this is give a quick overview of the crm and provide simple navigation to whatever data you might want to see, like contacts…companies…or deals.
So, let’s say that I want to view one of my contacts here. I’m taken to the contact view where I have the contact information here on the left, and notes on the right. I can edit this contact right here…or I can delete the contact here. Let’s say that I’ve spoken with this person. I can add notes about that conversation over here. Once I save that note, it appears on the contact page.
Okay, so let’s look at the company this contact works for. The company view is similar to the contact page with the information on the left, only here we have this nice badge to indicate status so the user will instantly know if they’re a lead or customer. Again, I can edit or remove this company and even add notes at the company level here.
The difference here is that I can view all the contacts in this company, add new contacts, and even drill into each one. And finally…I have a list of deals for this company, and can edit or add new ones if I need to. The really nice part about this is something that’s not immediately obvious. If I were to add a new deal, it would set off that customer onboarding workflow that I explained earlier with this diagram. I’ll demonstrate it after we build the CRM, but not right now, okay?
Alright, so that’s the basics of this CRM system that we’re going to build. Actually, one more thing…I have these views over here where I can see all of my data in list format. So I can view my companies, contacts, and deals in a nice list and even edit or delete each one. Okay, so that’s a demo of what we’re building. Now, let’s get into the actual development.
I’ll be using the m-Power Development Platform today, which is a low-code tool that’s used to build really any type of business application quickly, while giving you full control over customization.
Okay, so let’s dive right in. To start things off, I’d like to create this single contact page that I showed you right here. We’ll be linking to this page from a few places, so I want to create it first.
I’ll just need to name this application and choose a template. I’ll choose the single row template as it will only display one database row at a time. Now, I need to select my data. I’ll be using the contacts database table in this one, and will need all of the fields. Now, one thing. This doesn’t include the company name, and I’d like to include it, so I’ll join out to the company table and grab the name field. Okay, now I’ll just need to tell m-Power how to sort this data…and let’s sort it by contact id. Okay, that’s all I need to do for this one so let’s build it. We’ll still need to customize the look and feel of this after it’s built, but m-Power is doing the heavy lifting for us.
Okay, so now that it’s built, let’s check it out. Obviously it’s just displaying data right now, but we’ll need to make some changes to make it look like this, so let’s jump into m-Painter and do that now. m-Power’s applications are built using n-Tier architecture, which separates the data layer, the logic layer, and the front end. That means I can manage each layer independently of the other one. In this case, I can customize the front end here in m-Painter.
And…while I’ve been talking I’ve started working on this–splitting the row into two columns and have the contact data on the left. Now, I’d like to create that blue box at the top. One of the great things about m-Power is that I can edit at the code level if necessary. Most of the time you don’t need to, but it comes in really handy. Really this is one of the only times I’ll dive into the HTML during this video…and I’m only doing it because I have a specific idea for how I want this to look. Here, I just want to add a little container for the image and name with HTML. I already have a CSS class for this container which basically just gives it a blue background, centers everything, and makes the image round. For the customer image, I’m just using an AI face generator to automatically display a fake face. Of course, if this were a real CRM, these images would be data driven. Now, I’ll add some placeholder text for the name, title, and company in here, and save this. Okay, let’s replace that placeholder text with some database fields. I’ll pull in the first name…last name…title…and company.
Also, let’s hide some this data in here. I don’t need to see the company number, contact number, and the name and company since it’s listed above. Then, let’s make this text a little bigger and add some bold formatting to each data heading here. Let’s save this and see how it looks so far. Not bad, not bad…it’s shaping up but we still have some things to do. One thing to mention…because I’m using an AI face generator, it will generate a different face every time this loads, so don’t get confused when the face changes.
Let’s compare this to the initial demo application. It’s looks pretty good…Actually…I just realized that I forgot to include the address fields in the app I just made. I’ll go back and add those, which is pretty easy. Those are all in the companies table, so let me grab them real fast. Now I just need to rebuild this, but not overwrite my front-end changes. And that’s one nice part about m-Power–it’s easy to go back and make changes after you build.
Okay, now that it’s built, I’ll jump back into m-Painter here and add those fields. The easiest way to do that is through the form designer. Now I still see these fields that I’ve hidden, but I’ll just leave them since I know they won’t appear in the finished app. Now, it’s just a matter of adding some rows…arranging fields how I want them…and then dragging the new fields in here. I’ll skip through that part as it’s pretty straightforward. Now I just need to apply this layout and…I have all of those fields on the left now. I’ll just add that formatting like I did before, but do it in the background and skip ahead since you’ve already seen that. Okay, so that’s done. I’ll save this and refresh that application. Great! Now it’s looking like it should. I have all those fields in there. But, there are still a couple things I need to do to make it look like the demo.
First, what happens if we need to edit a contact, like you saw in the initial demo? You see I have a way to edit and delete the contact. To add these features, I need to create a maintenance application here in m-Power that lets me manage my data. I won’t walk you through the entire build process here as it’s the same thing as you just saw. In fact, every build process is the same–it’s just the template that changes–and of course I can customize everything I build in m-Painter.
Okay, so I’ve built this application that lets me update, add, or delete a single record in the database. I’d like to pretty up this form a bit though so I’ll jump back into m-Painter and open up the form editor. The form designer is really nice as it lets me quickly adjust my layout, remove fields, or add fields. I’ll just make a few layout changes and apply this layout.
Now, let’s do a couple other things before we save this. First, I want to hide this row in the form as I don’t want users editing that. Next, I want to convert this company id field and the lead origin field into a dropdown. I created a few database driven dropdown lists beforehand. I didn’t show you that process as it’s the exact same build process that you’ve seen twice already–it just uses a different template. The nice part is that I can use these data-driven dropdowns anywhere, yet only maintain them in one place.
And finally, these fields are text area fields, but I want them to be regular inputs, so I’m changing those.
Okay, so I’m finally done with my form and I’m going to use this in a few places. First, let’s add it to our contact view here. I’ll create some text, center that, and finally create a button that will link out to that form we just created and edit the contact. Let’s make this an info button…and then select that app that I just made. Now…I need to make sure that it’s passing the correct data so I’ll connect the two using the contactID field. That way, m-Power will automatically pass the correct record to that form.
And I want to show you a quick diagram of what’s happening here because I’ll do it a lot and it’s not super obvious. Basically, I’m connecting this contact view app with the contact maintainer app by passing the ContactID field, which exists in both applications. In this case, the contact ID is 102, so the contact maintainer app looks up Contact ID field 102 in it’s data table and returns the corresponding record or records. Okay? In m-Power we call that a smartlink and it’s very useful in passing data between two applications…and I’m going to be using this a lot. So, that’s what’s going on in the background here.
Finally, I’ll make this appear as a popup so I’m not taken away from this page. Okay, I think I’m all done with this. Let’s save this and check it out. Once I click this button, I can now edit this specific contact. So it’s working perfectly. Great!
Now, let’s add a way to delete this contact. I can reuse that same form and I’ll speed through it as it’s the same process as before. The only differences are that I’ll leave this as a plain link and change the mode to delete. It’ll be another popup just like the last one. Once I build this out more, I’ll need to come back in here and make this redirect to the home page or something, as I can’t redirect to this page anymore as it would be deleted. I’ll do that later. So, if I save and reload this I can now delete this contact.
Okay, so this is coming together. If you remember from the demo page though, I still need to add a list of notes for this contact and a way to edit and add notes. Now, the notes are stored in a different database table, so I’ll need to make an app that lists those notes and then one to maintain single notes, just like I did for the contacts.
Again…every build process is the same in m-Power. So, rather than walk you through those two build processes, I’ll do them in the background and skip ahead. Okay, I have those two apps done. I do want to jump into m-Painter really quick and edit that notes list. Namely, I’d like to add a link to that new form I just made into this notes list. I’ll add a couple of columns here and make one heading for edit and another for delete. Now, let’s go through the same process of adding a link…making a button…linking it up to that form…setting the mode to update…connecting the data…and making the whole thing a popup. Okay, now I’ll do the same for the delete button, but won’t walk you through those steps as it’s the same thing.
Alright, so this is good to go now. Now, let’s add it my contact page. One thing I forg ot to mention is I have a list of recent apps up here, so I can quickly navigate between. I’ll open up the contact view and jump back into m-Painter. It’s pretty easy to add this, I’ll just want to insert an element to this column on the right. I want to add a card which is in the components dropdown here. Once I have that…then, I’ll hit okay…and there, I have a nice card here. Now, I don’t want to use the text or button in it, so I”ll clear out all that stuff in there and then…I just need to import that notes list that I just created.
Of course, I only want to display notes for this specific contact so I’ll have to connect them like I do with the forms. Okay, so that’s set up. Now let’s just add a title up here…and give it a little formatting. Finally, let’s add another button so users can add notes for this user. I’ll rush you through this process as you’ve seen it a few times already. The only difference here is that I want this button to be right aligned, so I’ll add a quick style in here. Alright, so that’s done…just one more thing before I save it. I’ll add the contact’s name up here instead of the app title.
So that’s it, let’s save it and check it out. Now, I have my notes list here…let’s try adding a new note to this contact. I’ll give it a date, a name, and a quick note. Once I submit that…it appears in my notes list like it should. So, I think we’re done with this page for now. Let’s compare it to the demo app I showed you in the beginning. It’s very close…of course, I’ll want to come back and add some breadcrumbs here and link to the company page here, but I still need to create those apps.
Let’s do that. Now that we have the contact view, let’s create the company view that you see here. Now…now…this section on the left and this notes area over here are exactly the same as what you just saw me build. Same build process and steps…just over the company data. So, rather than go through the same steps all over again, I’ll create those two areas in the background and then skip the video ahead and show you how to add this deals section and the contacts section. Okay?
Okay, so I’ve built those two pieces for my company page in the background here. Now, we can add the other pieces–which if you recall from the demo application here, are the deals and contact list. So if you look at this deals area, we’ll need a few pieces–a list of our deals, a way to maintain deals, and a way to quickly change the status here. Let’s make all of this now.
The first thing I need to do is create an app to manage deals. I’ll just rush through this build process as it’s identical to other ones that you’ve seen so far. Now, after this is built I will need to set up some statuses and some transitions in the workflow area, which I’ll walk you through. But first, let’s jump into m-Painter again and edit this form. I just want to rearrange the fields a bit in the form editor…and once that’s done, let’s add a few finishing touches on here. I’ll hide this field as I don’t want anyone editing that, and also add some dropdowns in here. So we have a dropdown for company…which will just auto populate anyway…deal type…salesperson…and deal status. These will just make it easier for the person who’s adding or editing a deal so they don’t have to type everything in.
Okay, let’s save that and then jump into the workflow designer. The workflow designer is exactly what it sounds like…it lets me create workflows and automations that are triggered by this application. This time however, I’ll just need to add some status options here and these are super important in a few ways. First, I’ll pull these status badges into my deals table and will also use them to trigger workflow events. And I’ll use them in one more way, and that requires me to add transitions. These transitions tell the app how the statuses flow. So, the contract sent status can be changed to the contract signed status. That one can be changed to the invoice paid status…and this is how any deal for this company would proceed. Of course, I can add transitions to multiple statuses, say that I want to jump from contract sent to invoice paid…I could do that, but that’s not how the flow works here. Okay, so I’ve set that up. Now let’s make that deals listing table.
I’ll use this to display all of the deals for a specific company but also add buttons and statuses from the app I just built into this one. Again…this can get pretty repetitive so I’m not walking you through the whole build process but I do hope you’re seeing how easy it is to create different types of apps. m-Power’s build process brings you most of the way in a few minutes but then lets you add on or change this however you want. So now that this is built, let’s jump into m-Painter and add a few columns here. First though…let me get rid of these ID columns. We have a lot of information in this table and don’t really need to display these. Next, I’ll add a few columns here. I’ll need two columns before this deal status column for my edit and delete button, and one after for my quick status change button. I’ll go through and add some column headers real fast for edit, delete, and update. Now, I’ll add an edit button and a delete button that link out to the app I just made to manage these deals. I’ll skip through this process though as you’ve seen it many times already. Okay, I have those buttons, now I just need to add a status badge in this field which is pulling statuses from what I just made. Then I want to add a button to quickly change each status here, and that’s where those transitions come into play. You can’t see it here but let me save this and show you what that looks like. There, now you see that I have button that will change a status based on the transitions that I made earlier. So if I receive a signed contract, clicking this button will update the status to contract signed. Pretty nice, huh?
Now, all I need to do is add this to the company view screen that I was working on. I’ll go through the same steps as before…creating a card…clearing out the info in that card…importing that deals list app and make sure to connect it using the company ID field. Now I just need to add a card title…let’s call it deals…and then add another button to create a deal. I’ll skip through that as you’ve already seen that process.
Okay, so we’re almost done with this. I’ll save this and load it up again to show you our progress. Our deals list is in there, it’s pulling only the deals for this company, and if I were to manage one of these…it’s all working well. Perfect, so let’s finish up this screen with a list of contacts in this company.
I’m putting this together really fast, but I did want to show you one part that we haven’t covered yet. I have fields for first and last name in this database table, but I want to display the full name.
I’ll create a calculation here to join these two fields together. The nice thing is that I can use this calculated field in my application just like a regular field. And I can do all sorts of calculations…that is just a simple example…but you could create really any type of calculated field and then use it in your application as a database field. I could also add filters or customer logic to my apps over here…we just haven’t needed to do that in this project. Now that I have my calculated field, let me jump back into the field settings and move this field up a bit. I want it to appear as one of the first fields in this table. As I look at these fields I realize I don’t have the company name field. I’ll add that in the background here since you’ve already seen the table join process. Okay, now I have my fields and they’re positioned where I want them. So, that’s it…now let’s build it. Okay, now that it’s built I’ll jump into m-Painter and add some drill downs.
I’ll add a drill down on the name column that directs people to that contact page that we created first. It’s the same process as adding a button. Then, I’ll add a link to the company that drills into the company page…and you might be thinking…but if I’m using this on the company view I’m already on that page…why add a link? Well, I plan to use this contact list on the home page as well, so the link would come in handy.
Okay, I have all of this done, so now I’ll jump back into the company page and do the same process as before. I’ll add a card, import that application, and put an add button up in the card header… but will skip through this since you’ve seen it a few times already.. Alright! I think we’re finally done with this page. Let’s check it out.
I like how this turned out. You see I have my contacts list here and if I click on any contact I’m taken to that contacts page which we made first. Now, we’re done with the hard parts. Now we just need to create a few more apps, tie this all together, and then add some workflow pieces in here.
Let’s do that now. If you remember from the demo, we also had these lists of our data…one for companies…one for deals…and one for contacts. I can add new rows to each table, and I have options here to view, copy, or delete, and I can click this to edit each record. And all of these editing features are built into a specific template..namely, the data list with web form template. It’s basically just like the data list I’ve made a few times, but with editing forms built in. And you might be wondering why I ddin’t just use this template if I also needed forms…and I built it the way I did because of how I wanted ot display the forms–in popups and without redirecting to a different page. It’s nice because m-Power gives you a lot of options to create things exactly how you want.
Okay, while I was talking I’ve just put together the company list and you probably noticed that even with this different template, the process was the same. Before we run it, I’ll jump into m-Painter in the background and add some drill downs but won’t show you that because it’s the same process as you’ve seen over and over. Okay, so let’s run that and check it out. I have a list of companies and can drill down into individual company pages, or come back here and edit each record. I can also add new companies up here. Pretty straightforward. Now, I’ll do the same thing for the contacts and deals…actually…I don’t need to do the deals as I can just use the deals list I already made, since it has editing options built in…I will do the contacts but in the background and skip ahead because you’ve already seen how that works.
Alright, so now I have the contacts app…and…of course, the deals app down here. Now, I just need to create the home screen and tie things together.
If you remember the demo, I have these two charts up here. One to track sales totals by salesperson and the other to keep a count of how many deals each one has closed. I’ll make one these to show you how it’s done and then do the other one in the background. As I’m making this, you might notice that it’s the same process as before. I’d say the big difference with reports is on the dimensions where you can subtotal by different fields…and you’ll see that m-Painter has some different options…but other than that it’s pretty standard. Alright, so this report will display sales totals by salesperson. Let’s jump into m-Painter and adjust the graph a little. I want it to be a 2d bar chart…make sure only total is selected…collect data at the salesperson level…and make the width 100%. So I’m all done with that chart, now I’ll make another one that displays total deals closed by salesperson, but I won’t walk you through that build process. I’ll just do it in the background and skip ahead. Alright, now I have my two charts ready, lets make the home screen.
For the home screen, it doesn’t really matter what template or data I’m using since I’ll just delete everything in m-Painter and import the apps that I want. Planning to import the two graphs up at the top and then import data lists of companies, contacts, and deals in tabs at the bottom. Let’s do that now in m-Painter.
First things first, I need to get into grid mode and delete this entire row here to give us a blank slate. Now, let’s add a couple of rows here…and then…split this one in half. Now, I’ll cards in each box and import my two graphs into each one, but will do it in the background and skip ahead since I’ve already demonstrated that process so many times.
First, let me open up the contact view again and add some links. I want to link each contact to their company page…and I can do that now since we have a company page all set up. I’ll just link them up using the company id and we should be good. Next, I’d like to add some breadcrumbs up here for easy navigation. The logical navigation here would be home, company list, company name, and contact name. I’ll add those links in the background since you’ve seen this process so many times. Okay, so I have my breadcrumbs here, now lets jump into the code here and copy this so I can reuse most of it on the company page. Let’s open up the company page here and add these breadcrumbs. Of course, I’ll take out the contact name, but the rest should be good. And finally, let’s add some navigation up top.
I’ll just need to go into m-Power and select the menu option. I’ll start with a couple of groups…lets say a home group for the home page…and then a…i don’t know…data group for the three data tables. Now, I just need to set up some menu options like so. I’ll select my home page, and find a good icon here…this one is good…then add it a the correct group…and make sure that all users have access to it. Then I just need to do the same for all options in my menu. Keep in mind, I could set up security, user roles, and so much more. I could add a login and only give certain users access to this system, I could disable access to certain parts based on user role, or even control data access at the row level, so different users can access the same application but only see the data they’re authorized to see. I don’t want to do any of that in this demo though as I plan to make it available to test out afterwards. Okay, so I’ve put in all of my menu options, and that should wrap up everything except the workflow. Let’s check it out.
I think this is coming along nicely considering the amount of time we’ve put into it. What was that…maybe 30 minutes…or 45 minutes if I hadn’t skipped past the repetitive parts? And it all works well. If I start from the home page here, let’s select a contact. Let’s say that I’ve just had a good conversation with them and want to note that in here. I’ll add a quick note which will now appear on this page. Let’s check out the company page here. I can edit this company information, add notes, drill into contacts associated with this company, and add new contacts if I need. The one thing we have left to do is add a customer onboarding workflow to the deals. That way when we add a new deal, the onboarding steps happen automatically. So, let’s work on that now.
First thing that needs to happen when this company gets a new deal, is they need the customer to sign a contract. Here’s the contract we’re working with…it’s pretty basic…but without automation an employee would have to come in and enter the information and then email it to the customer. I want all of that to just happen automatically. To make that happen, I need to create another application that basically pulls database fields and inserts them into a PDF document, and again…you’ll notice that it’s same build process. I’m just grabbing fields from the deals and company table and then building this. Now, there is a big difference after this is built. I’ll need to go into the properties, tell m-power where my pdf is located, and map my database fields to my pdf fields. I’ll speed through this step…save this…and then run my app. When I run, it generates a PDF with my fields mapped. Pretty handy, right?
That’s the first step. Now I need to set up a task group, which is basically a series of events that I can trigger in my workflow or I can schedule to run at specific times…like reports, data summaries, text messages, things like that. I’ll create a task group and call it…Send PDF contract. Now, I need to add a task, which defines what will happen when this group is called. I’ll give it a short description and choose this option down here to merge data to pdf and send via email. Then I’ll move to the next step and tell it which application to run for this, which is my pdf merge…and then give it a filename. I do need to map the orderid field to this PDF generator app, so I can pass that data to it in my workflow. For the recipients, lets pull in the email field…and that should be good. For the sender, let’s make something generic like “TealRock Advisors” and I’ll make a subject line here and a brief message. I’d obviously pretty this up if it was a real system, but for now I’m doing it quickly. Okay, I think I’m done with this now, so I’ll save it and move on.
I think I’m ready to set up my customer onboarding workflow. I’ll open the application that’s used to add new deals and dive into the workflow area of that. This workflow can be set to fire any time this form performs an action, such as adding, updating, or removing a record. To start things off, I’ll set a condition that will trigger when a new deal is added. Now, I want to trigger that task group to send an email to the customer with the contract…but…I don’t have the email address in the deals table that this is working over so I’ll need to look it up in another app. The great thing about this is once I map these fields, I can use any field from this application in my actions. So now, I want to call that task group that I just set up. I’ll name this action…lets say send contract to customer…and then call that task group. I’ll need to map a couple of fields so I can use them in the task group–that email field that I can now use because I pulled that in using the step above, and the orderid field. Okay, so that’s the first step and it’s all setup.
You know what, rather than test each step let’s just make everything now and then test it all at the end. I’ll add a condition that fires when a deal is updated. Now it can get updated in two ways that should trigger actions. First, if the contract status is changed to ‘contract signed’ I want to send this customer to our payment processor which in this case is Stripe. First though, I’ll need to do the same thing as before and pull data from that company listing app. We’d just need the name and email this time. Then, I’d call an API. Lets name this ‘add company to stripe’ . I already have a web service setup that call’s Stripe’s API and here, I”ll show it to you real fast. It’s pretty straightforward, I’m just calling stripe’s api and using my api key to authenticate. Really easy to set up.
Going back to my workflow, it’s important to know what format the api wants your data to be in. While most are json, this one requires this format. Now, I just need to map the data fields I want to send over with the data field names on Stripe’s end. In this case, I’ll only send over the order ID, email address, and company name. I’m mainly looking to show you how easily I can pass data to other services. If this was a full-blown CRM system that would be put into use at a company, we’d obviously send a lot more or even set it up to automatically generate an invoice and send it to the customer. Don’t need to do that here though as I just want to show you how easily I can pass data using APIs.
Okay, so that’s what happens when the contract is signed. Now, suppose that we’ve sent an invoice and it’s been paid. I want a few other things to happen. First, I want to update my ERP system with this new sale. Specifically, I’ll update the ERP order table. Now, I do need to pull in the company name here like I did in the other actions, as I need to send that to the ERP order table. Then, I’ll choose an action that will let me write a database record. Let’s call this…’add deal to ERP order table’. I have a maintenance application that let’s me add records to that order table, so let’s call that. Now, it’s just a matter of mapping the fields in this deals app to that table. I’ll speed through this as there are quite a few. Alright, that’s done. Now we have one more thing to set up.
When someone has successfully gone through the customer onboarding workflow here, I want the salesperson to reach out to them to schedule their services. So, let’s send an email to that salesperson to let them know they should contact the customer. First, I’ll need to grab the salesperson name and email from the salesperson table…and this uses the same process as before. Next, I’ll need to grab the company name from the company listing. Finally, I’ll set up an email. Let’s call this, “Salesperson notification email”. For the email address, let’s grab that salesperson email that I just pulled. For the subject line, lets say something like, “Schedule service for a new customer”. And then in the body, let’s write up something basic, like, ‘Hi,’ and I’’ll grab the company name using brackets like this. Then I’ll add some more information about what they should do and I’ll save this.
Okay, that’s it! We have our customer onboarding workflow all set up. Now for the moment of truth! Let’s test it out. Okay, let’s open up a company page and test this out. First, let me make sure that this company has an email address I can check, as it should be receiving the contract by email. Let’s change this to a temporary email account so I can test it. Alright, let’s add a deal. It automatically populates the company name field, so that’s good, I’ll just fill in the fields here, select the hours, hourly rate, total…salesperson, and change the deal status to “contract sent”.
Once I hit accept, this should fire off my first workflow step which sends the contract to the customer. Let’s check that out now. So over here in my temporary email account, I did receive an email..good good..and there’s my pdf attachment, which is the contract that was generated. And it pulled in all of the fields from that new deal I just set up. So, first step is working. Now let’s say that I received the signed contract. I’ll change this status to ‘contract signed’ which should fire off the next step that pushes this data into Stripe. If I open up my Stripe account, here it is. And of course, I could set this up to do so much more like automating the invoicing process, but for sake of time I’m just doing this.
Alright, next step. Let’s say that we’ve sent them an invoice and it’s been paid. It should then write a record to my ERP Orders table and send an email. Before I change it, let’s look at this ERP table to make sure the order isn’t in there. As you can see, the last order was on 10-3 in the amount of 3000 dollars. Now, let’s change the status here, which will update my ERP table and send an email to the salesperson. Let’s look at that ERP database table right here. If I scroll to the bottom, I can now see my new deal. And finally, let’s check the salesperson’s email. I have an email in here and the fields are being pulled in as they should. And this is really efficient for the salesperson, because they don’t need to worry about this process. They’ll get notified when they need to take the next step…and that’s what’s so nice about a custom onboarding workflow–it works exactly the way you need.
So, that’s it! I’ve just put together a custom CRM system in under an hour that perfectly fits the business needs…includes workflow automation…integrates with third-party invoicing systems…updates an ERP system…and you’re in total control of the data. You can store in house or in the cloud.
If you’d like to play around with this demo on your own, I’ve included a link below the video. If you’d like to learn more about m-Power or set up a demo, visit us on the web at mrc-productivity.com. Thanks for watching.
Learn how m-Power can help you
Sign up for a free trial
Sort videos by category using the options below