Zapier – Superpower App to Automate Workflows

Zapier is a business automation tool that allows multiple business apps to speak to each other. It is majorly focused on business needs enabling users to repeat the tasks and automate them between different applications. For example, between gmail and mail gun, hot mail and mail chimp, etc.

Zapier is an enormous time saver with handy integrations just like Connect Your Apps and Automate Workflows. Zapier moves information between your web applications automatically so that you can focus on your most important work.


Zapier Apps

How to integrate apps in Zapier?

Zapier consists 101 apps, which we can integrate or connect to each other for repeated task automation/ transfer of information.

integrate Zapier apps


Note: Every task you automate is called as zap.

Now select the apps that you want to automate. Here, I am trying to automate tasks between Gmail and Google tasks. I’ve just selected both the apps and Zapier suggests me what are the workflows available for automation.

Zapier workflows


Select the desired integration

Zapier API


Click on “Use this Zap”

Zapier Apps


Click on “Use this Zap”

Now, Zapier will load the workflow details and the actual integration between applications will start.

Zapier Integrations


Just select the option “Email Matching search” and click on continue



Select the Gmail Account to Authorise and Test the account (You can add multiple accounts also).

Click on “Save +Continue”

Zapier Apps


Mention the subject or from address or label that you prefer while filtering emails and creating tasks.

For example: from:amy OR from:david or subject:dinner label:my-family
Click on “Continue”

Zapier API

Cross-check the details and click onFetch and Continue

Zapier Automate Workflows


Click on “Continue” and complete the Gmail integration part.

Google Tasks Integration:

Zapier API


Select Create Task and click on “Continue”

Zapier Workflow Automation


Add your Google account (it can be the same Google account or different)

Click on “Save + Continue”

Zapier Integrations


Arrange the tasks based on your subject, content, and label body. This was the real tricky part of organizing your tasks. You need to identify the pattern of your emails and set accordingly.

Zapier Apps


“Click on Continue”

Zapier Workflows


Finalize task details. Click on “Create & Continue” or “Skip test & continue”

Note: Sometimes it fails throwing 400 error. Just try again with a proper request.

Zapier premium apps


Click on “Continue”

You’re done with the Zapier…

Zapier Apps


Navigate to Dashboard: You will see your Zap there. Turn on or off based on your requirement.


Now, it’s time for testing your zap!

Send a mail with the similar template that you have set as a key in your zap.

Zapier Workflows


Now open your target mail id and check whether you have received the mail.

Zapier Automated Workflows


Important: For free account, there are some limitations.

Zapier takes about 5 min to add the content to Google tasks. Wait for 5 min and open Google tasks to check it.

Zapier Apps



Here we go. Zapier added the mail to Google tasks.

In the same way, we can integrate many applications and design workflows. Zapier has free and premium plans enabled with specific features. So, choose a plan that best suits your business needs.

Architecting Serverless Notifications on AWS

Real-time notification plays an important role in use cases like you need to notify the users when there is an update available for the app or when a comment/inquiry is received on a website. In such use cases, the web admin should be notified and the user should be addressed with some kind of confirmation notification either through email/sms/push notification (in the case of a mobile app).

Generally, implementing notifications will be an easy task when we have a dedicated server with the help of Web Sockets. We can make a permanent link between the server and the user and use publish-subscribe mechanism to share messages. The browser will be subscribed to automatically receive the messages without checking for constant updates.

Generally, implementing notifications will be an easy task when we have a dedicated server with the help of Web Sockets. We can make a permanent link between the server and the user and use publish-subscribe mechanism to share messages. The browser will be subscribed to automatically receive the messages without checking for constant updates.

What exactly does serverless mean?

Before knowing about serverless, we should understand

BaaS:3rd party services (commonly known as “BaaS” or Backend as a Service)

FaaS:Custom code that’s run in the containers (“FaaS” or Function as a Service)

Serverless architecture basically refers to the applications that generally depend on these services. AWS is the best-known vendor host currently. By using these kinds of ideas, and by moving focus to the front end, such architectures generally eradicate the need for the server system sitting behind the application.

Such architectures can significantly reduce the cost of operational and complexity of the dependencies and immaturity of support services.

Here, I’m trying to describe how to implement a notification system (Email, Push Notification, SMS) for a use case that I mentioned earlier.

Serverless Notifications Architecture Diagram


Serverless Notifications


Advantages of Going Serverless
  • Simple, dynamic & flexible
  • Best-in-class PaaS
  • Easy to use/implement
  • Easy to build
  • Reliable
  • REST API is independent of platform or languages
  • Secure & scalable
  • Deploy fully functional software on the AWS Cloud

Getting Started


Knowledge of Node JS, and AWS services (Lambda, API-gateway, DynamoDB, cloud watch)

There are many ways to automatically create these routes, functions, and DB setup using some serverless js .But here I am going to show you manual setup of all these things.

Simple Steps for Creating API

Step 1: Create API-Gateway (resources & methods)

    • API-Gateway is a fully managed service provided by AWS that makes easy for users to create, monitor, publish, maintain, and manage secure APIs.
    • Open Amazon API Gateway console. Select an existing API or create new API by entering a name.

 AWS Serverless Model

  • On the API tree view, just click the Actions button in the menu to “Create Resource” and name the resource
  • With the selected resource, create a new method and select the HTTP verb with the method

Step 2: Setting Request templates

Click on Integration request and select body mapping template.

Set the value to application/json and give a template. This template controls the request passed to lambda event. If you want to filter some details as per your requirement or send extra parameters to the request, it is done here. Simply to say, you will have control on the request passed to the lambda function /mock.
You can generate different templates using the online tools provided by AWS.

the request, it is done here. Simply to say, you will have control on the request passed to the lambda function /mock.

You can generate different templates using the online tools provided by AWS

AWS Serverless Notifications

Architecting on AWS

Step 3:Create/setup Lambda

The actual process of triggering the emails/push notifications/messages happen inside this lambda function. Here, I want to show triggers between the lambda and dynamodb and vice versa.
We need 2 lambda functions

  1. Simply receive the request and save the data into dynamodb.
  2. When there is a new data insert into dynamodb, the lambda triggers and sends notifications

Lambda function 1:
A. Event (Request details)
B. Reading the configuration from s3 bucket (secured area)
C. Saving the data into dynamodb
D. Sending the response back to API-gateway

Lambda function 2:
A. Event (inserted data in dynamodb)
B. Reading the configuration from s3 bucket (secured area)
C. Pushing Notification through Firebase
D. Pushing a message through 3rd party service (solution infinity)
E. Reading the templates from s3 (Mail body)
F. Pushing emails through MailGun or Amazon SES (Admin, user, manager, etc)

Step 4: Setting a Response templates

This is also similar to the integration request. Click on Integration response and select body mapping template. Set the value to application/json and give a template
This template controls the response passed by lambda. If you want to filter some details as per your requirement or format json response, it is done here. You will have control on the response passed by the lambda functions /mock. You can generate different templates using the online tools provided by AWS
Note: This is really helpful for formatting the response when you try retrieving the data from dynamodb and passing to the user.

Step 5: Enable CORS

CORS defines a way to client web apps that are loaded in a domain to interact with the resources in other domain.

Click on “Enable CORS” option in Actions


AWS Serverless

Step 5: Deploying the API

After an API is created, you must deploy it to utilize them. In AWS, deployment takes place in stages .We can say stage as a version of API (dev, test, stg, prod).

Click on “Deploy API” Option in Actions, add the stage details and save. Your API’s are deployed!

Fire Base (Push notification to Devices)

Firebase gives you the scope to develop high-quality apps and to grow the user base. We cover the essentials so that you can monetize your business and focus on your users. We have many services provided by the firebase. Here, I will show you push notification implementation.

Firebase also provides NO-SQL DB for storing data as similar to Dynamodb

    • Log into firebase console and select Create New Project

Architecting AWS

    • You can setup apps for Web, Android, and iOS. Follow the instructions to setup the android or IOS project and build the application and to deploy in your device

AWS API-Gateway

    • Click on the app of your choice.


    • Click on Notifications from the left panel. Here you can push and test whether your app is working as expected or not

Serverless Model

Result Notification:

Serverless Notifications

Lambda Coding (Node)

Prerequisites for node: Configurations, HTML templates loaded from s3

Node modules: Mailgun, AWS SDK, Markup.js, FCM-push, global-tunnel

Sample code for pushing a notification

var FCM = require('fcm-push');

    var serverKey = '';
    var fcm = new FCM(serverKey);

    var message = {
        to: '/topics/global', // required fill with device token or topics
        collapse_key: 'your_collapse_key',
		priority:'high'	,
        data: {
            your_custom_data_key: 'your_custom_data_value',
			 title: 'sample',			 
            body: JSON.stringify('BODY YOU WANT TO PASS')

    //callback style
    fcm.send(message, function(err, response) {
        if (err) {
            console.log("Something has gone wrong!");
        } else {
            console.log("Successfully sent with response: ", response);

Sample code for Mail Notification

templateBody- s3 html template
config- s3 configuration file
var message = mark.up(templateBody, emailObject);
                    //Initialzing mail gun
                    var mailgun = new Mailgun({
                        apiKey: 'MailGun API KEY',
                        domain: 'DomainName registered'
                    //initialozing the input parameters
                    var data = {
                        from: config.emailFromAddress,
                        to: config.emailTOAddress,
			   bcc: config.emailBCCAddress,
                        subject: config.emailSubject,
                        html: message

                    //sending the mail through the mailgun
                    mailgun.messages().send(data, function(err, body) {
                        //If there is an error, render the error page
                        if (err) {
                            result.message = 'error';
                            console.log("got an error: ", err);
                        //Else we can greet    and leave
                        else {
                            result.message = 'Send sucessfully';

Sample code for sms Notification

//sending sms to Customer
            //initializing Json request
            var Json = {};
            Json.sender = config.SMSSender;
            Json.message = CustomerQuery;
            Json.format = 'json';
            Json.flash = 0;
			Json.sms = [];
			var receiver = {}; = ContactNo;			
            var body = JSON.stringify(Json);
            var globalTunnel = require('global-tunnel'); 
         	// making POST request to send SMS{
                       url:     url,
                       body:   body
                  }, function(error, response){
          if (error) {
			  result.message = 'Send SMS faild'
		      result.error = error ;
			  result.message = 'SMS sent Successfully to customer' + ContactNo;
              console.log('response to customer' +  JSON.stringify(response));

Sending Push notifications is one of the best approaches to sustain and enhance customer engagement with your app. The existence of great services like AWS helps developers to achieve this service efficiently in a short amount of time.

Gatling Gun Is Now A Prospecting Tool for Testers

Testing is the most crucial part of an application development process to ensure high-quality, impeccable features. Therefore, along with the standard, integration, functional, and load tests, browser tests are also important in a company’s testing strategy. After developing the application, the substantial final task is to write & implement load tests.

To perform the load tests efficiently, a new tool, known as Gatling Tool, has been preferred now-a-days by many organizations. Gatling is an open-source load testing framework for analyzing and measuring the performance of applications. It is an easy to setup tool where simulations and scenarios are coded in simple domain-specific language (DSL). An attractive point of this tool is that you can just define and write up your performance test scenarios in the similar way as you do it with other test automation frameworks. You can thus generate readable and easy to maintain performance test code.


  • High performance
  • Scenario recorder and developer-friendly DSL
  • Ready-to-present HTML reports


  • HTTP
  • JMS
  • WebSockets
  • Server-sent events

Keeping It Portable

  • Gatling’s installation process is simple and doesn’t require machine-by-machine basis installation. Gatling libraries are available from a Maven repository.
  • Gatling is built on Scala, and the simulations also must be written in Scala
  • Gatling also provides us elegant and meaningful reports that are easy to analyze and understand what exactly is going on with the application.
  • Gatling integrates easily with Jenkins through the Jenkins-plugin and runs your tests through Gradle and Maven with the help of maven-plugin and gradle-plugin.

Let’s Have Deeper Look on it? 

Basically, Gatling can be structured in 4 different parts:

  1. HTTP protocol configuration – This defines the base URL that runs against your tests. Also, you can define other configurations such as user agent, language header, connection, and so on.
  2. Headers definition – This provides the headers with a request that has to be sent to the server. This is relevant because the headers add a bit of a load on servers that are testing.
  3. Scenario definition - The core of your test! A Scenario includes a group of actions (like GET, POST, etc.) that are executed to simulate user’s interaction with the application.
  4. Simulation definition - This defines the load (number of users) that concurrently executes your scenario for a period.


A simulation is a description of the load test, which describes how user populations runs; which scenario they execute and how new virtual users are injected. Here is an example of simulation definition:

Gatling Load Testing Tool

Steps to Install Gatling

Step 1

Download Gatling <Gatling 2.1.7 latest> based on your operating system (you need to have a JDK installed for Gatling; it requires, at least, JDK7u6)

Step 2

Extract zip and navigate to the <D:\gatling-charts-highcharts-bundle-2.1.7\bin> and run recorder (recorder.bat)

Gatling Load Testing Tool

Gatling Load Testing Tool

Step 3

Once the recorder is launched, the following GUI lets you configure how requests and responses are recording

Gatling Load Testing Tool

Step 4

Configure the recorder. All you need to do is start recorder and configure your browser to use Gatling Recorder’s proxy.

Step 5

Recording the scenario:

  • Browser your application URL
  • When you open the application, it will automatically start running the scenario
  • When the scenario playing is finished, click stop in the Recorder interface

Note: Try to act like a real user. Don’t jump from one page to another immediately without taking the time to read. This will make your scenario closer to real users’ behavior.

Gatling Load Testing Tool


The Simulation will get generate in the folder user-files/ simulations/ computer database of your Gatling installation, under the name BasicSimulation.scala.

Step 7

Running Gatling-

  • Launch the script located in the bin directory:
    • On Windows: %GATLING_HOME%\bin\gatling.bat
    • On Linux/Unix: $GATLING_HOME/bin/
  • You will see a menu with the simulation
  • Choose a simulation number(it depends on ur stimulation name):

[2] computerdatabase.BasicSimulation

Gatling Load Testing Tool

Gatling Load Testing Tool

Step 8

When the simulation is finished, the console will display a link to the HTML reports

It’s time to analyze

Reports will be generated in the Results folder

Gatling Load Testing Tool

Gatling Load Testing Tool

Gatling gives a complete analysis of each and every request with graphical representation (charts) in HTML files. Hence, they are portable and can be viewed on a web browser of any device.

Reports give us these details:

  • Active users over time
  • Response time distribution
  • Response time percentiles over time
  • Requests per second over time
  • Responses per second over time

At Vmoksha, we run the load tests as the final step according to our Quality Assurance strategy, and if performance is under an acceptable Margin, we push it to production.​ As we always move towards the goal of continuous delivery of Projects, we just need an effective tool that gives accurate test results. Gatling tool seems to be the best suitable tool to achieve precise outcomes and for our timely delivery of services.