Create project with your Certified Freelancer and get free $100
SoftwareSupp

7 min read

SoftwareSupp’s Hourly Plans

Check the advantages of getting SoftwareSupp Hourly Plans. See how a dedicated expert can be helpful when you need work automatization, software integration, new functionality implementation, or to conduct team training.

Get an Hourly Plan and let Softwaresupp verified experts do the work 

Time is money. That is why in business, only time matters. The more you have it, the more you will do. More actions mean more money earned. Save the time and let our experts work for you. 

Getting an Hourly Plan is a type of contract in which we guarantee the delivery of a verified software expert to the client within 24 hours. What is more, during this time we provide a project management system available in the client's account. You as our client need to give us only information about your business and your expectations.

Starting cooperation with Softwaresupp takes 3 simple steps

Realizing a project couldn't be easier


The key thing is to contact SoftwareSupp and define the project and your requirements. At this stage, you also obtain an Hourly Plan and automatically have access to our verified expert base. Then, you are connected to a carefully matched expert. After accepting the project, we sign an electronic agreement and start working. The entire process takes about 24 hours. This means that a software specialist starts working for you during one day. What's more, the project is carried out with flexible working hours. In a time range suited to your requirements. It all depends on what technical support you require. Whether you need an expert for Pipedrive, Google Analytics, Shopify, Klaviyo, Magento, Webflow, Digital marketing, Saas Implementation, Javascript, CRM system, or just software training for team or consultation.  At SoftwareSupp you can also report and outsource the smallest tasks with an instant estimate. Could it be easier to hire a qualified specialist?

Softwaresupp’s Hourly Plans

Hourly Plans are available in three variants: up to 5, 10 and 20 expert hours. By all means, you can extend the scope of work by adding funds to your Softwaresupp’s account balance. The choice of package size depends on the project’s scale and your needs. SoftwareSupp Hourly Plans allow you to use even 1 hour of our experts' service. Hours remaining in your balance can be used at any time. Buying an Hourly Plan is a form of the deposit that triggers access to the platform. The hourly model of work allows you to minimize costs and guarantees the timely implementation of a project. The deposited amount is stored and secured in the ESCROW payment system. It ensures the security of funds and the possibility of reimbursement. It also allows us to confirm that the service provided by our expert is on time and in a quality manner.

The easiest way to get it is to contact us via form or by booking a phone call


Hire SoftwareSupp experts and let us help you choose a suitable plan, determine the scope of the project, and explain the monitoring system of the expert's work. It is worth mentioning that we also service inexperienced companies that have not strictly defined needs yet. In such cases, SoftwareSupp also provides technical support at the very beginning of cooperation.


Project- expert matching      

SoftwareSupp ensures the connection of a project with a dedicated expert within 24 hours. We guarantee the top-quality services offered. Softwaresupp's experts have been checked in terms of technical and social skills. A dedicated expert profile is available after the matching process with a project. Profiles of the specialists contain full descriptions of abilities and experience. A specialist can be matched by software e.g. Zoho, Hubspot, Jira, or by skills e.g. UX design, business analysis, e-commerce, sales. We have a wide range of people specialized in various types of software. You can find experts who will help improve the most important areas of your company. Within 24 hours, you can get top-quality service.  


Moreover, experts are selected not only by matching skills but also depending on language and demographics. By cooperating with SoftwareSupp, you will avoid costs and the process of looking for a suitable professional. Our database includes experts who have passed the verification of both identity and abilities. We have no doubts that the expert provided will carry out the project at the highest level. It would be enough to precisely define needs and we will take care of the rest. A single freelancer or even a software house is not able to provide such a wide range of services.

Monitoring and work's approval system

Each project created has its special page for communication and progress monitoring. Everything is in one place and available at any time. Experts mark the progress of the project implementation, which enables the client to control and influence the individual stages. Our experts know that fluent communication is a key issue. It is extremely important for the project's success and customer satisfaction. After purchasing an Hourly Plan, you get your system, where you can add a team, submit live tickets, add tasks. Having access to the Softwaresupp platform enables you to track the workflow and progress of the project with assurance the whole communication is transparent. SoftwareSupp is providing you with a custom platform, equipped with a meeting system, which you can use to discuss anything with your verified expert and ticketing system, to post support queries with 1h response time. The Project board allows you also to control an expert's working hours. 

You need to know that we care most about your satisfaction, so we constantly watch over the quality of services provided by our experts. We do this through weekly NPS (Net Promoter Score) surveys and ongoing project monitoring. 

Hourly Plan’s benefits

  • Instant launch
  • Clear settlement
  • System for work approval
  • Continuity guarantee
  • Balance available for the whole team to use
  • Pay only for the value
  • Guarantee of the top-quality service
  • Possibility of a simple consultation or booking software training for the team

Moreover, no matter what problem you are struggling with. Thanks to our wide offer, we will be able to help you. Starting from CRM integration or Hosting integration through team training, consultations, and outsourcing of the smallest tasks. You will be able to count on SoftwareSupp throughout the entire project. Feel free to contact us at any time. Do not be afraid to give us a chance - it is possible to cancel the project within 14 days. Then, the secured deposit amount will be returned to your account. Furthermore, in case of any issues, we will provide you with a suitable replacement for your project so that it can continue seamlessly. The goal is to complete the project within the agreed time. Transparency and continuity of actions make you trustworthy. Right now you can check the electronic contract that you will sign while buying a plan. SoftwareSupp is a legitimate, registered company and takes full legal responsibility for any disputes that may arise.

So, save your time - get an Hourly Plan - and relax. The work will be done.

Małgorzata Suchecka

Content Specialist at SoftwareSupp

Customers

12 min read

Advanced CRM integration for VersaBox

Learn how we combined marketing and development efforts to create a dedicated and powerful Pipedrive and ActiveCampaign integration.

In my case, the team did a great job by implementing CRM & Marketing Automation + their two-way integration via AWS. All the information flows work flawlessly, sales & marketing teams sees all their activities on accounts, contacts, opportunities.

So to sum this up, if you care to work with professionals, if you expect them to advise you on the optimal solution (ROI), if you are fed up of being surprised by system limitations only after its purchase, or simply the box solutions are just too expensive for you, meet up with SoftwareSupp.

Marcin Szwajka, CRM Manager at VersaBox

About the client: VersaBox develops world-class, advanced technology solutions for transforming global manufacturing and logistics. They put autonomy to work for their clients by implementing the Smart Intralogistics platform based on autonomous robotic units.

Time of the project: 3 months

Scope:

  • Setting up and configuring Pipedrive and ActiveCampaign accounts
  • Designing data structures in systems
  • Integrating systems with lead sources and lead acquisition tracking 
  • Configuring and optimizing marketing and sales funnels
  • Designing a process for managing the database
  • Developing a dedicated integration of Pipedrive and ActiveCampaign systems
  • Testing, troubleshooting, and tailoring integration to customer requirements  

Effect: A tailor-made integration of Pipedrive and ActiveCampaign systems to manage sales and marketing processes. Dedicated service to synchronize and maintain data integrity in both systems.

Experts responsible for the service realization:

Maks Piechota, Certified Web Systems Freelancer

Marek Waśkiewicz, Certified CRM Freelancer

It's well known that combining different scientific disciplines can bring tangible benefits. This was also the case with this project, which allowed us to combine marketing operations with development and create a robust sales and marketing management system.

First, SoftwareSupp's marketing and development experts teamed up to configure both systems from scratch, and in the next step, integrated them into a bespoke service to provide VersaBox with extraordinary value. Let's follow the process to see how our client got rid of information distraction and organized daily sales and marketing operations.

Configuration and optimization of Pipedrive

Until now, our client didn't have a single system for managing end-to-end customer relationships. VersaBox wanted to gather information about the customers, which would allow for effective management of the customer database and appropriate planning of sales and marketing activities. So, we decided to implement the Pipedrive system and adjust it to the specificity of VersaBox's business. 

At first, it was necessary to define and shift the entire sales process to Pipedrive. It needed to be consistent with the existing model of conducting sales activities in VersaBox. We discussed the sales process during many conversations and meetings with the client and created a sales funnel in the CRM system with these stages in mind:

  • Lead
  • Prospect
  • Qualification
  • Technical Concept
  • Offer
  • Offer Analysis
  • Forecast

Within the aforementioned funnel, we distinguished two teams working together: Sales and the bid office. Moreover, we had to design the workflow between them so that both teams were equally involved in the process. Marketing SoftwareSupp expert defined the activities, areas of responsibility, and interdependencies between the sales and bid office teams.

We created a sales workflow between teams and automated the scheduling of actions for every deal at all stages of the sales process. From that point, the deal first goes into the hands of the salesperson, where the lead is qualified in the BANT methodology. Then, it goes to the bid office, where the initial concept and offer are prepared. Finally, depending on the next steps, notifications are sent to the bid office or sales as the goal is to close the deal. 

Creating the funnel and the dependencies between the teams was only part of the operation. It was important that individual sales deals were automatically matched to the appropriate stage in the sales funnel based on the activity and scoring. Therefore, we automated the activity planning for every deal at different stages of the sales process. Additionally, we automated sending messages to the bid office team after a sales deal hits the next stage of the sales funnel. 

Marketing SoftwareSupp expert has defined custom fields in Pipedrive required to be completed during the sales process. These fields include basic contact information and acquisition sources, daily activity, scoring, newsletter subscriptions, and participation in marketing campaigns.

The next step was to configure labels to enable effective follow-up and lead qualification. We added the appropriate labels to Pipedrive so that VersaBox can qualify contacts as a customer, hot lead, warm lead, cold lead, standard, and partner. In addition, the labeling process has been automated depending on the current sales stage. This will definitely make it easier to filter the data later and highlight those most interested in VersaBox's offer.

Due to the nature of the client's business that sells an end-to-end solution for AMR-based automation, we decided to mirror their offering in Pipedrive and configure the Products. Pipedrive provides the relevant fields associated with product variants or product codes so that the implemented Products are consistent with the actual state. In addition, we synchronized Pipedrive with the database so that the offer is always up-to-date. 

Next, we tackled importing the remaining data from external tools used by the client into Pipedrive. The SoftwareSupp experts were able to add information from Excel files, contacts from Outlook and GetResponse, and other databases to Pipedrive. This allows VersaBox to have all the information in one place and not have to switch between systems.

It was important for the client to track deal sources properly. So, we structured them with one-choice and descriptive fields in Pipedrive. From now, they're automatically populated based on the marketing activities documented in ActiveCampaign. We defined custom fields named Source, Medium, Type, and Campaign to best reflect the specifics of the sales deal. Now, the VersaBox team can freely use this information to optimize sales processes.

To realize the full potential of the CRM system, SoftwareSupp experts decided to integrate customer email inboxes with Pipedrive and move all email conversations there. An integrated inbox for the entire organization allows the sales team to track clicks and opens of emails. Additionally, Pipedrive's built-in AI Sales Assistant can suggest the next sales steps based on email communication. 

The entire process was topped off with security settings to keep all the client's data and know-how in one place. The SoftwareSupp experts configured security settings, including data leak alerts and suspicious login alerts, to prevent data leakage.

Configuration and optimization of ActiveCampaign

In ActiveCampaign, as in Pipedrive, we had to define custom fields with the disclaimer that they must match the fields in Pipedrive. This allowed us to take the final step in the project, which was to implement a dedicated system integration.

The Versabox team wanted to send emails to their contacts while avoiding blocking the versabox.eu domain. As it happens, ActiveCampaign allows you to define a dedicated domain to send emails to your customers. Additionally, it gives you the option to remove "Sent on behalf of" from the email to increase credibility. In this case, SoftwareSupp experts came up with a solution to define users, domain, aliases, and addresses for sending emails and getting feedback to ActiveCampaign. In this way, we protected the main domain from being blacklisted.

Our client was previously carrying out email marketing activities using GetResponse platform. We suggested moving to ActiveCampaign as this tool works better with Pipedrive and allows the client to expand their marketing efforts into other areas, such as marketing automation, CRM and Sales automation, or Service and Support activities. After discussing this issue with the client, we began exporting data from GetResponse and importing it into ActiveCampaign.

We also automated the process of sending emails to existing contacts. ActiveCampaign allows us to schedule automated emails to be sent to potential and existing customers based on actions they take, such as signing up for a newsletter or visiting a website. Additionally, the integration with Pipedrive, which will be discussed later in this case study, gives the sales team access to information about marketing efforts and all messages sent through ActiveCampaign. Finally, we took advantage of available resources and imported currently used HTML email templates into ActiveCampaign.

Obraz zawierający tekstOpis wygenerowany automatycznie

ActiveCampaign platform provides a compelling way to build marketing campaigns. There's nothing more fascinating than figuring out who paid attention to our brand and what channels they used to reach out to us. Versabox wanted to start monitoring the sources of leads within marketing campaigns. Our experts structured these sources with one-choice and descriptive fields that are automatically populated in ActiveCampaign based on marketing activity. It's worth recalling that these fields also correspond to fields in Pipedrive, so there are Source, Medium, Type, and Campaign.

Now that we knew we could identify lead sources in ActiveCampaign, the next step was to integrate communication channels into the system. We started by integrating existing contact forms on the homepage and landing pages as the main channels for acquiring new leads. Next, SoftwareSupp experts used ActiveCampaign's built-in progressive web forms. They allow collecting potential customers from the website and targeting them with appropriate marketing activities in the next step. Additionally, these forms have been integrated with Pipedrive to generate new sales deals for the sales team.

Other communication channels we integrated with ActiveCampaign were paid lead generation sources, such as Google Ads, Facebook Ads, LinkedIn Ads, and we did this with Zapier. This allowed for even more precise marketing messages and a higher conversion rate. 

Another communication channel was social media profiles. Versabox wanted to target marketing efforts to a specific audience on Social Media. That's why we integrated social media with ActiveCampaign using Zapier and built Facebook Custom Audiences. From now on, our client can freely plan campaigns to selected contacts from the ActiveCampaign database. Additionally, ActiveCampaign allows you to add or remove selected contacts to Facebook Custom Audience based on the activity of those contacts, such as when they visit a website or open an email.

Our client was particularly interested in the behavior of website visitors. Gathering data about visitors is an essential indicator in website development and provides a basis for making changes to its design, navigation, or categories. In addition, it's possible to identify people interested in a particular product, segment customers, and run scoring to send relevant marketing and sales messages.

We used ActiveCampaign's site tracking feature to get information about visited pages, time spent on the page, or interest in selected products. Additionally, VersaBox can monitor clicks and newsletter opens, as well as returning users.

 The term "scoring" has been mentioned a few times already, so at this point, it's worth explaining what it's all about. VersaBox wanted to measure potential customers' behavior to manage the MQL (Marketing Qualified Lead) process accordingly. So, SoftwareSupp experts created a contact scoring system based on attributes and activities of leads, such as a contact type, call progression level, actions performed, or stage in the sales funnel.

Together with the client, we defined specific scoring goals that trigger selected automation, such as sending an email, taking action, or sending a notification to the sales or marketing team. With Pipedrive integration, when a specific goal is met, leads are converted to sales deals with a notification sent to the sales team. This makes work much faster and more efficient.

Pipedrive and ActiveCampaign dedicated integration

At this point, we had Pipedrive and ActiveCampaign configured for user hierarchy, approval process, and access rules. We also completed the creation of the appropriate custom fields, sales process automation, and lead qualification.

The last and crucial step in this project was to integrate and synchronize Pipedrive and ActiveCampaign systems based on the prepared specification. The main goals of this integration were:

  • Adding a new contact, updating, or completing data in one tool automatically populate customer data in the other platform.
  • A lead who performs certain actions is to be automatically converted into a sales deal.
  • Pipedrive is supposed to automatically collect data on the marketing campaign and selected lead activities, e.g., email openings, newsletter sign-ups. This data is visible on the sales deal in Pipedrive, which allows the salesman to have an insight into it. This enables better-tailored communication with potential customers and increases the effectiveness of sales efforts.

Our work resulted in real-time updates of contacts, attributes, and customer relationships in both systems simultaneously.

Detailed integration process

In the first phase of integration, we wanted to use the Zapier platform. However, this platform proved to be insufficient for the client's needs. It doesn't utilize all the capabilities of both systems and isn't suitable for two-way synchronization. Therefore, a SoftwareSupp development expert proposed creating a dedicated solution.

We used this technology stack to deliver a solution:

  • AWS 
  • Serverless 
  • Node.js 
  • Nest.js  
  • Typescript 
  • Platforma Ubuntu 20 LTS

In a nutshell, we built a dedicated service using the Amazon Web Services (AWS) cloud. This service uses the system's native API, which provides much broader capabilities. First, the SoftwareSupp development expert implemented a technique called "semaphore" to avoid a problem known as an "endless loop." The idea is that the system that first updates a resource reserves it for itself for a specified time (30 seconds to be exact). During this time, updates from the other system are ignored.

How does this bespoke system work?

  1. All developed system code is available in a repository on the AWS platform.
  2. The system is deployed on the AWS platform using the Serverless Framework (under MIT license). The configuration file for Serverless is located in the root directory of the repository. Our client can use this file to deploy the system again, e.g., in case of changes in the code or moving to another AWS account.
  3. The system uses the AWS API Gateway service to communicate. Once the system is deployed, the Serverless Framework provides a URL link to invoke the system.
  4. The system uses REST API for communication and provides appropriate endpoints for Pipedrive and ActiveCampaign. This makes it possible to handle notifications (webhooks) from ActiveCampaign and Pipedrive.
  5. Both systems were configured to send notifications to the appropriate URLs defined by the SoftwareSupp expert.
  6. While testing the system, our expert noticed the phenomenon of "race condition," which in extreme cases resulted in duplicates. This meant that notifications related to "create" or "update” of data sent at the same time, attempted to create a new record simultaneously. This problem was resolved by using a mechanism called "debouncing." Additionally, the client and members of the marketing and sales teams were trained to wait until the record matched back to the corresponding record ID in the other system before making any further changes.

The system is tailored to the client's needs and uses client-supplied access passwords and searches for custom fields available only in the two systems.

Dedicated system development

The whole process was to merge two different systems to manage sales and marketing more efficiently. The main benefit of this migration is that VersaBox can work in the same environment and work together to close deals and increase sales. From now on, sales and marketing teams can conveniently add and change customer data without losing consistency across both tools. SoftwareSupp's experts have a wide range of marketing or development skills and can take a comprehensive approach to your project to provide you with a tailored solution. 

Maks Piechota

Certified Senior Developer​,​ Engineering Lead​,​ Project Manager​/​Owner

CRM

3 min read

Customize Your Business Using Zoho Apps

When it comes to Zoho software implementation in your company, you'd like to have an expert in that matter by your side. What's more, to use all available functionalities and solutions and learn how to use them - you need a Zoho expert even more.

When it comes to Zoho software implementation in your company, you'd like to have an expert in that matter by your side. What's more, to use all available functionalities and solutions and learn how to use them - you need a Zoho expert even more.

The benefits of Zoho apps

After deciding that Zoho can be appropriate software, you need to build an individual package of your needs. And this is where dilemmas begin. Zoho tools offer an enormous range of possibilities. The platform provides solutions for multiple fields e.g marketing, analysis, customer support, email sending, sales, recruiting, and many more. The application enables travel mapping, maximization of commercial opportunities, migration of email and SMS communication, controlling of sales, arranging meetings, as well as accounting and IT management. It can be a database of customers and a system for managing various sectors of the company in one place. Integration of emails and meetings can be configured with task automation. The marketing panel is equipped with generating reports and analysis options that optimize sales and marketing processes.

Zoho implementation may improve work and increase employee satisfaction

The proper software can provide you with automatic workflow, a great flow of information in teams, and adaptable panels. Zoho can be adjusted to your needs. Divya offers implementation and customization of tools for CRM, mailing, sales IQ, and social media. She organizes Zoho training for admins to use and configure Zoho CRM. Deploying the perfect CRM platform is possible only with proper planning and strategy.

Create a platform for management, and CRM campaigns for the entire company, for all its units. Verified experts will help you to personalize Zoho to the requirements. Managing people and products has never been so easy.

Verified Zoho Expert

Divya has developed experience with Zoho. She has been working with this software for over 13 years. In the last 4th months, she managed to introduce Zoho One to 17 companies. Divya has been working in project management for years. She has extensive experience in analyzing and creating strategies.

Additionally, she has proven to understand the task efficiently. We verify our experts which you can hire to deliver top-quality software services to customers from different regions and industries.

Furthermore, she cooperated with teams to resolve issues with product, service, or accounting areas. She can conduct training workshops and provide technical support. Over the years of experience, she has also learned how to successfully solve internal application problems. What is more, her work is based on managing projects from concept to completion. It means that she deploys the CRM platform’s structure and architecture ensuring it works seamlessly across the organization. Deployment is built on testing and analysis to achieve the most effective approach for the company.

Divya’s project at SoftwareSupp

In the latest project at Softwaresupp Divya’s task was to create a Zoho project for a sporting club. The application was intended to enable an easy flow of work and information and to facilitate communication between the coaches. In the created panel, the admin can sign a contract and obtain a signature from an employee. For this purpose, a function for sending documents has been created. The program reminds to renew the trainer's certificate automatically by the time-personalized option. The client needed a Zoho expert to help him develop an application based on his specific requirements. Generally, Divya developed a customized trainers base and learned the admins to use the Zoho Employee Onboarding app.

When the customer needs to implement new functionality, resuming cooperation will only be a formality.

Divya Sundaraju

Certified Zoho CRM Freelancer

Extending Sharetribe Flex with backend capabilities

Sharetribe Flex is a complex, production-ready system for building an online marketplace. However even in Flex there is a limit of default customization that you can do. In this article we will explore how to push past those limits.

Sharetribe Flex is a complex, production-ready system for building an online marketplace. If your project needs a lot of customization and flexibility (pun intended), but you don’t have time to build everything from scratch and time to market is very important, then it’s a great choice. However even in Flex (which is a more advanced version of its cousin „Go”) there is a limit of default customization that you can do. In this article we will explore how to push past those limits. Extending backend capabilities can be a great way to augment your marketplace without losing anything that you’ve already built. 

Why is this important? Using the recipes below we were able to create a lot of advanced functionalities in our marketplace application, some of them are:

  • Multiple listing categories that serve different purposes: project listings, expert profiles, services, support tickets and even exams that enable us to carry out our own experts certification. Those listings are then modified based on different triggers coming from our platform. We have also prepared endpoints for group editing of those listings based on different criteria.
  • Frontend presentation of analytical data generated by our backend server, for instance number of offers and median offer value for our bidding system where our experts can provide multiple offers for each project posted by our clients.
  • Sending custom emails that are not directly triggered by transaction state transitions (so there is a lot more flexibility) and can be easily modified without usage of Flex CLI by our non-technical team.
  • Custom inbox system that introduced group messages, including attachments in messages, reading receipts that track and display if messages were opened and ability to trigger those messages from other users actions.
  • Creating CSV files that exports merged data from multiple listings and user accounts that enable our marketing team to easily track the global state of our data and keep track of all user activities.
  • Custom notifications system that allows us to specify our own triggers, send group notifications to different types of users, track notification open status and hide selected notifications after opening.
  • File management system that allows us to store large files provided by users and expose them on the platform in form of convenient links.
  • Predefined customer paths that include scheduled, automated emails and in-app notifications, that allows us to remind users about different types of actions that they can perform.
  • Custom Stripe integration with balance management that enabled us to create deposit mechanism for our clients.
  • Server-side PDF offers generation triggered by users action in a web application, accessible both from the app as well as delivered via email.

In this article you will find how to:

  1. Set up Integration API with some practical suggestions on API keys security, keeping a unified project structure with the same deployment process, as well as creating your own Node.js REST API for your custom endpoints.
  2. Connect those backend endpoints to the frontend React application using already built request-related logic from Sharetribes’ FTW template.
  3. Tips for running a project in development mode with a CRA proxy without a need to rebuild it every time (hot-reloading for both frontend and backend).
  4. Set up simple token-based verification middleware for your new API with additional notes on developing more secure infrastructure with time-limited tokens and permission validation.

Tool selection and prerequisites:

In order to achieve all of the things listed above we will have to make some arbitrary decisions on tool selection, however you can change those tools if you have your own preferences and almost all of the presented guidelines will still be applicable and should provide a lot of value. Tools that we are going to use here are MySQL installed on NGINX server, serving as our database and Sequelize as database ORM. We will also assume that you are using Sharetribe Web Template („FTW-daily” or „FTW-hourly”) when speaking about Node.js setup as it is a nice background that will both speed up your initial development process as well as enable us to make this article a bit shorter :) Some prerequisites are also basic knowledge of JavaScript and Node.js.

Disclaimer: This article is a result of almost a year of custom development made in-house for SoftwareSupp.com marketplace where you can find and hire best software experts for your next project. We would also like to thank the great Sharetribe support team that helped us along the way and suggested a lot of solutions that are presented below. 

1. Setting up Integration API

There are two main APIs that are provided by Sharetribe. Marketplace API is something that you probably already know and use as it is integrated into FTW templates. It's a great tool for building initial UI but it’s also designed with some limitations which are derived from the assumption that all Marketplace API calls are used as the result of users actions directly from their devices. All of these calls are made in the names of authenticated users and you will not be able to access some of the marketplace data from them, for instance other users’ private data, transactions or messages. 

What if you would like to build some entities that share data between multiple users? Or maybe create some custom data analytics that will group data from multiple users and listings and export them as CSV files? This is where Integration API is needed. Some of the additional capabilities of integration API are: ability to query multiple users at one request, advanced transaction queries, updating/closing/opening/approving listings, and much more.

According to Sharetribe docs there are 3 different ways to use Integration API: building on top of existing Flex Template for Web (FTW), fork their Integration API example and build on top of that or create completely new application. First method has several benefits that includes faster development time (you are working on an already built server), uniform code base (you can keep frontend and backend in the same github repository) and unmodified deployment process (after making changes to backend you can deploy your app without any changes to underlying process), so it became our choice that will be described below.

Why not using Integration API directly from the frontend app? Because it would expose Integration API secret keys and put at risk your marketplace data security. Flex Template is based on the Create React App tool which is embedding all environment variables in build time. You can read more details here.

First step to start is to create Integration API application in Flex Console which is described in details in Sharetribe docs. You don’t have to follow all the steps that includes cloning example Git repository, only setup app in Flex Console and save credentials in your .env file with these variable names:

FLEX_INTEGRATION_CLIENT_ID

FLEX_INTEGRATION_CLIENT_SECRET

If you use two different environments for test and production make sure to create Integration API applications in both of them and include them in your env.development and .env files accordingly.

Now it’s time to set up the backend server. FTW template is designed with Server Side Rendering (SSR) in mind so we have our Node.js server out of the box. We will now create new folder structure for our Integration API endpoints like this:

Some of the endpoints like “batch” jobs to update multiple listings in marketplace data will be only used by us so we’ve grouped them in /internal directory, others will be exposed outside for our frontend app to use, so they will be stored in /external folder. In /api-integration directory we will create a separate file called integrationSdk.js that will encapsulate logic related to Integration API authentication via our API keys:

We can now set up our first endpoint that will use Integration API. For test purposes we will define an endpoint that will receive some user id and return data about this user in the response body.

When the endpoint is ready we will also have to connect it to our router. We will use an already existing API router that puts all endpoints behind /api route. In server/apiRouter.js which should be already present in your project (part of FTW template) at the top of the file add a line which import our test endpoint function, then find part of the file where router middleware is defined and paste second part of code which connects router to our function after that.

To test your new server side Integration API endpoint you don’t have to run entire project with sharetribe-scripts, you can only run Node.js server with node command like this:

If everything has started correctly we can now move to Postman, which is a software used by many developers to test APIs. We will create new request, and setup our test data by extracting some example userId from existing marketplace data:

Before running request one more important thing is to set Content-Type in Headers section to “application/transit+json” to ensure correct parsing of our request body:

After running our example request we see that everything went fine and we can even have a glimpse at users’ attributes which were cut in the middle by author because whole response was very long:

2. Setting up frontend helper function to run all the requests

We have now established basic example of server side endpoint that connects to Integration API and in this way we can explore whole API further to get some useful data and ability to write this data into Flex database as well. One of the most used resources in our development team is Sharetribes’ API Reference which you can find here.

What is probably missing is how to run those requests from our frontend React application and we will explore it now. In our FTW template there is already established request-related logic separation that resides in src/util/api.js file. The only thing that we have to do to extend it is to export our own custom function at the bottom of the file:

Now we can import it and use it in any container or component that is present in our React application like this:

Before deployment of your new enhanced marketplace application please remember to update your environment variables (integration client id and secret obtained from Flex Console).

3. Enable hot-reloading for both frontend and backend

Hot-reloading is a very nice and useful feature that speeds up the development process and enhances developer experience. You are most likely aware how it works on the front-end side when you are running “yarn run dev” command from sharetribe-scripts. However what you will notice is that changes made to backend endpoints will not be refreshed in this mode. What we need to do in order to see our changes is to run a “yarn run dev-server” script that will rebuild our backend. If you have a little experience with running those scripts you will certainly notice that the dev-server script is a bit slow, because it’s running the build process under the hood. If we want to speed things up in development mode we can follow these steps. First we have to install nodemon which is Node.js tool that automatically detects any changes saved in our source code and restarts server. We can do it by running command:

Then we have to set up a Create React App proxy in our package.json file. It will tell our development server to proxy all requests from frontend app running in development mode on default port 3000 to our backend server that we will run simultaneously on port 4000. 

You can find more details about proxying in Create React App docs.

Right now, last step that we have to make is to open two separate terminals, for instance in our Visual Studio Code IDE or other tool that we are using to run sharetribe-scripts, and run our frontend app and backend app simultaneously:

Voila! We have both our frontend and backend running and they will automatically reload in case of any changes made to any of them.

4. Token based verification

Our backend endpoints are running, but we might not want to expose all of them for anyone to access. In this case one of the best options is to create some token based verification, that we will in fact implement. We will use very popular JWT tokens, create functions for their generation and explore how to link them easily to our endpoints as convenient middleware.

First we have to install the ‘jsonwebtoken’ package from npm. Then we have to generate our private key for token generation (separate for test and production environments) and save it in .env.development and .env files accordingly. It should be string with alphanumeric and special characters, I’d suggest a 128-bit string that you can generate with any tool found in google but you can use longer as well. We will save it under JWT_PRIVATE_KEY variable name. Now, in the /api-integration directory we will create a jwt.js file which will export functions responsible for generating and checking our token. Our token generation is based on users UUID that in production code will be received from frontend requests. In that way we will have consistency between our tokens, users and marketplace data. We will also be able to easily verify users' permission based on JWT token, because after decoding it we could decode users id from them and check if there is a match. 


Now we can add authenticateToken() function as middleware to our testIntegrationAPI endpoint. It will intercept our request, check headers in search for a token and then validate this token with our private key. In case no token is present we will send 401 HTTP code status, and in case token is not valid we will send 403 code. When the token is correct, control will be passed over to the original function that was requested, in our case testIntegrationAPI().

To test our endpoint we have to generate our token for test purposes, in order to do that we will import generateToken into our apiRouter.js (this should not be done in production, it’s only our testing method) and run it for some arbitrary userId taken from our Flex Console. 

After running our backend server we will get output like this:


Now we will copy this token and insert it into our Postman request in the headers section. Don’t forget the space between ‘Bearer’ string and token value.

We can test our /testIntegrationAPI endpoint once more. If we turn off our ‘authorization’ field in headers it should return 401 status. If we provide a token with some mismatching value (for instance delete last letter) it should return 403 status, and in case where we will provide a valid token it should run our testIntegrationAPI() function.

One other thing to mention is that in our testIntegrationAPI() we can actually access the value stored in our JWT token if it’s valid. We can do it like this:


After testing our endpoint again we should see our user object with an id stored inside that should match the id of the user that we provided when the token was generated. In this way we can check who is the owner of the token and based on that we can allow or deny access to some of the resources provided by our endpoints.

Code above was only a short example of how to implement a convenient and easy way to secure our endpoints with token verification. In production-ready implementation we would have to implement functions for generating token for every user which would be called upon registration by trigger from frontend application. Suggested place to store generated tokens is some field like userToken created in privateDate in marketplace data (Flex Console). We would also have to implement a function that updates every existing user with generated token to enable them to use our token-secure endpoints.

Final Notes

In this article we explored how to further extend Sharetribes’ FTW template for building advanced marketplace applications. We’ve learned how to safely connect to Integration API and how to use it from our React application. There are of course other things that can help you further extend your backend capabilities and will nicely integrate with solutions established above. At some point in more advanced projects (like our own SoftwareSupp.com marketplace) you can also think about setting up your own database and integrating it with your backend server. From our experience we can hint that it is useful to connect your data entities by UUIDs from Sharetribe to make your data model consistent with marketplace data. You can also think about creating your own file management server that you can easily connect to this database and server-side endpoints as well as setup custom email automation with scheduler to trigger them at predefined date and time. We have done all of those in our application and we can attest that it is certainly doable but it did not fit into the scope of this article. If you are looking for help with your Sharetribe development process you can find experts with us.‍

Filip Ogonowski

JavaScript Developer

How to Build an Admin Functionality in Sharetribe Flex

How to use Sharetribe's built-in dashboard for triggering particular actions for the marketplace? Learn more in this explainer article.

Sharetribe has a built-in dashboard for triggering particular actions for the marketplace. You can manage all the users, listings, reviews and transactions there. The management includes transitioning particular transactions to next steps, editing data entities and editing your marketplace settings.

What’s missing in all those functionalities is the possibility to trigger actions on the platform or even in a 3rd party tool. For example, if you want to notify the user that the listing they posted was approved by the marketplace operators - you need to do it manually. This can be an inconvenient problem.

To solve the blocker you can easily implement a custom admin dashboard in the app. All you need is the Integration API set and some environment variables configurations. 

1. Create admin user

First, you need to create a user, that we’ll be acting as the admin. All the desired admin actions should be done via his account. After the user creation go to the dashboard (screen from user data entity view in flex console below) and copy the user’s ID. It will be stored in the environment file.

So in this case the ID would be 60781ed8-a89d-470a-b64b-21e30d21f20e. 

2. Create new variable

Go to your .env file and create a new variable. The name can be whatever you want, just remember it should begin with REACT_APP to use it on the browser side. For this example let’s name it REACT_APP_ADMIN_ID. 

REACT_APP_ADMIN_ID=60781ed8-a89d-470a-b64b-21e30d21f20e

After you rebuild the app you should be able to access the variable from the code. 

3. Adjust based on your needs

Now it all depends on what you want to achieve. Let me show you an example of triggering a mail after you approve the listing.

First, you need to create an event that will trigger the listing approval and mail sending.

onApproveListing = () => {

 } 

const approveButton = 

        <SecondaryButton onClick={() => onApproveListing()}>   

        Approve     

  </SecondaryButton>

You need to add a display condition for the button - the user has to be the admin. 

onApproveListing = () => {



const isAdmin = currentUser.id.uuid === process.env.REACT_APP_ADMIN_ID; 


const approveButton = isAdmin    

             && <SecondaryButton onClick={() => onApproveListing()}>   

                   Approve  

  </SecondaryButton>

Now what’s left to do is to call the desired functions in the onApproveListing method.

onApproveListing = () => {

       approveListing(listing.id.uuid)

            .then(() =>       

               triggerListingApprovedMail(listing)   

               )   

               .catch(e =>       

                 console.log(e)   

                 ) 

}


const isAdmin = currentUser.id.uuid === process.env.REACT_APP_ADMIN_ID; 


const approveButton = isAdmin   

           && <SecondaryButton onClick={() => onApproveListing()}>   

                 Approve 

</SecondaryButton>

And that’s it. What’s else to do? Allowing admin to message other users limitless, adding particular types of listings or giving the functionality to export processed data in CSV for more complex marketplaces are just a few of the many possibilities that can be implemented for admin usage. 

Robert Mazelle

Certified Sharetribe & React Freelance Developer

Customers

7 min read

Creating the Marketing and Sales Technology Hub

How SoftwareSupp Expert Patryk created a tailored technology hub and connected Pipedrive to key business tools.

Time of the project: 6 months

Scope:

  • Setting up and configuring a Pipedrive account, along with qualifying and labeling leads
  • Configuring and optimizing marketing and sales funnels
  • Creating a user-friendly technology hub with several sales and marketing tools
  • Integrating tools for conversion tracking and ensuring consistency of all customer communication

Effect: A successful integration of Pipedrive with sales and marketing tools. Efficiently and transparently manage incoming leads and convert them into Won cases.

Expert responsible for the service realization:
Patrick Cieśluk, SoftwareSupp Marketing and Process Automation Engineer

The SoftwareSupp expert was hired to improve the management of incoming leads and converting them into Won cases. Due to the wide range of services, we had to take a comprehensive approach to build a customer and lead data management center. 

Problems to solve

The client needed a brand-new sales process for triaging new claim leads. Leads could come from various sources, such as emails, direct messages from Facebook, or website forms. Then, they were loaded into the Legal Case & Practice Management software, that's Eclipse Proclaim CMS. What's more, every new claim required proper documentation of the damage level and a few other criteria to be viable. 

The issue was that Proclaim didn't handle the initial triage process well. Some data was missed and scattered. As leads came from several communication channels, it was challenging to keep the information under control, avoid duplicates, and manage them properly. Also, it wasn't easy to work with third-party, external companies, or triagers and keep the information coherent. So, the client was looking for a CRM or lead management system to ensure consistency.

But this raised a new problem. Since the client wanted to implement new CRM software, we needed to design a way to integrate it with the existing CMS. It was all about how Won cases are pulled from the CRM and are imported into the CMS, including data, documents, images, etc. The new way of obtaining and bringing new claim leads into the CRM needed to be simple. 

Our client missed a few features in the CMS, such as:

  • Signing documents online.
  • Conducting webchats with customers.
  • Easily uploading images by customers and linking them to a particular sales opportunity.
  • Allowing third-party (for example, triagers or surveyors) access to view images provided by customers. 

Besides, all communication, such as CRM records, documentation, emails, and other texts, had to be branded.

So, the SoftwareSupp expert had to bring in new software solutions and make all the information consistent. This allows marketing and sales to find all the details related to leads and customers.

Implementing Pipedrive

The fact was that Proclaim, the CMS that was in use, wasn't sufficient. The client was missing several key business fields that made the data incomplete. So, the SoftwareSupp expert defined and expanded some basic sales opportunity fields in Pipedrive with additional customer-specific fields. 

There's more to it than that, but the goal was clear: Enable the agent to work with the customer proactively by filling in fields with real-time data. By doing so, the agent can gain knowledge and better understand the case. They can use the data in the next steps, such as creating documentation for the triager or preparing the legal retainer.

When it comes to collecting customer data, there were two ways to do it. The customer could provide the information themselves during the initial contact, or the agent could ask for it during the conversation. However, the forms weren't extensive. As a result, the client didn't have a complete set of customer data and had to ask additional questions on the next interaction. 

Now, our client can use the forms integrated with Pipedrive to ask the customer some details like name, phone number, email address, postal code, the best time to contact, services needed (HDR, TDC, EPA). All forms include information about the source and relevant branding. This makes it easier to see which services are most popular and to forecast workload.

We also created sales and marketing funnels for every service offered. For example, the sales funnel consists of steps, such as:

  • Lead Received
  • Contact Scheduled
  • Contact Made
    + 8 more

This brings transparency and improves workflow for sales and marketing departments. They can track the customer nurturing process and watch it grow.

Loading the claim and contact the lead

The customer was able to contact the client's agents through various communication channels. They could use a direct message through Facebook or a form on the website. So, the SoftwareSupp expert needed to refine the contact forms and add more fields to them.

Now, the customer can specify their needs in the contact form and ask for the right assistance. In this way, agents already have a set of information directly from the customer, and they can use them to analyze the case. In addition, when a customer submits a completed form, they immediately receive an automated confirmation. This ensures the customer that their case will be handled by the agent soon. Also, the agent has some work behind them without any additional effort.

The next step was to call the customer to determine the details of the case. At the time of completing the form, the customer can select the preferred method and time of contact. This is for the customer's comfort and to streamline the agent's workflow. The SoftwareSupp expert implemented a new tool, that's Kixie. Kixie is a power dialer designed to make an automated attempt to contact the customer. There are many advantages to such an automated cloud phone system, including the fact that:

  • It notifies the customer 15 minutes early of an upcoming contact request so that they can prepare.
  • It calls the customer at times of their choice.
  • If a customer answers the call, the system automatically connects them to an agent.
  • All information and events are continuously recorded in the Pipedrive system.

Implementing "Surveyor" triage

An integral part of running a litigation company is obtaining the triager's opinion. The triager needs to be familiar with all of the information to make the best possible decision about whether a case is viable. Our client wanted to make it easy to access information and photos so that the triager could easily review the case. We came up with an idea for such a process:

1. The agent provides the customer with a link connected to the CRM record

We needed to provide a feature that would allow customers to share photos and then associate those files with a specific sales opportunity in Pipedrive's CRM system. 

2. The triager gets an email with a link or shared folder

All customer data and photos are stored in Pipedrive. These are used to auto-complete the document viewed by the triager. More specifically, the fields in the document template are mapped to the fields in the sales opportunity in Pipedrive. 

3. The triager considers the information 

The triager can upload findings and other discovered information back into the CRM as another record in a given sales opportunity. 

4. The agent gets a notification about the update

When the triager adds new information, the agent is notified that some data and records have been updated and need action. 

Signing the legal retainer

The next step is to sign a legal retainer by the customer to agree on the contract terms for services.  

Here we introduced another system responsible for document workflow, and this is PandaDoc. PandaDoc is somehow connected to Pipedrive.

PandaDoc

After that, the sales opportunity is moved to the next stage in the funnel in Pipedrive. And this triggers the process of moving the case into Proclaim case management system, including all the data collected in Pipedrive.

Sending record, data, and documents to Proclaim

If the lead is fully qualified, i.e., is at the  “Received" stage, then the record is exported from CRM and automatically created in Proclaim, including data, documents, and images.

As we mentioned in the beginning, Proclaim is considered the main information hub. The idea is that when any lead reaches out, it goes through the entire sales process. If the legal retainer is signed, it goes to Proclaim as a Won case with all the data collected. Then, the agent continues to work with the customer at Proclaim and manages the case and information in this system. 

Before our support, agents were manually completing data in the Proclaim system. It was laborious and time-consuming. Our task was to automate data collection, lead acquisition, and customer case flow between the Pipedrive (CRM) and Proclaim (CMS).

Effect: several dozens of hours saved on manual tasks in the client’s organization.

Patrick Cieśluk

Certified Web Developer​,​ Marketing and Process automation Engineer

SoftwareSupp Newsletter

Subscribe and get real-life software case studies to your mailbox.

Thank you! We're looking forward to staying in touch!
Oops! Something went wrong or your email is already in our database.