January 14, 2020

Ask IH: SaaS owners how do you develop integrations with other services (e.g. Jira, Trello, Slack, etc)?

Hello Indie Hackers and SaaS owners! Nowdays clients want to have a tons of integrations with 3-rd party services. How do you develop such integrations for your product? Did you start from scratch or use some boilerplate code? Maybe there is some cool SaaS for that?

I'm curious because I think maybe here is a niche for the SaaS which will provide a set of integrations out of the box.

  1. 8

    You need to code the connection with your software yourself, no real way around that. No boilerplate code will know how your system works.

    But once you have done a few integrations you can start reusing your own code, just adjusting to the new parties API format.

    But want to cheat?

    First, integrate Zapier. 1 integration and you connect with 1000's of other top services.

    Crucially, this is key to your get out of jail free card for my next point.

    Say no to all integration requests.

    At first. When the same software has been requested 3 or 10 times, think seriously.

    Even if you can code a new integration in 1 day, that is the start of the work, not the end.

    Every new feature needs to be tested with each and every integration. Major updates need a lot of reworking across all integrations. Support. Bugfixes. Choose your integrations wisely.

    1. 1

      Thank you for the reply! What are the cons of Zapier (except the price)?

      1. 1

        As the developer of a Zapier integration, you don’t pay anything. Extensive/advanced users of your integration may end up needing one of Zapier’s paid plans.

        Disclaimer: I’m an engineer at Zapier. I’ve built a few private integrations. I’m also a very happy user. Opinions here are my own😊

      2. 1

        As the SaaS developer, none.

        As the user, it's free if not using premium connections and below a certain action limit.

        Depending on use case being over free tier makes the upgrade worth the cost since you have already seen the automation and got the benefit.

        When cost is a prohibitive factor your users will request a direct integration, but offering via zapier to start helps an easy answer until you can get data on priorities.

        1. 1

          Got it!

  2. 1

    I'm using a very useful service https://bearer.sh, it simplifies the auth process for 3rd parties integrations

    1. 1

      After quick review of their landing page I didn't understand how it can simplify the auth process for 3-rd parties integration. Can you explain please?

      1. 1

        Well, for my apps, integrations are implemented like this:

        1. A user clicks a button to connect a 3rd party service, i.e. Google Photos in my case

        2. The OAuth2 auth process is started

        3. The user accepts to connect Google Photos to my app

        4. You must save OAuth2 info on your DB (refresh_token, auth_token, etc.)

        5. To make a call to Google Photos API you need to request a new auth token via refresh_token and then make the actual API request

        Now, I personally built the entire above flow on other apps with a backend and is not a big deal, but on a new app running on Firebase, I decided to use Bearer.sh to do all the steps from 1 to 5 and their client manages API auth for you directly, so you can do something like Bearer.auth('bearer-user-id').client('3rd-party-name').get('project/123'), all you need to do, is to create and associate a bearer-user-id to each user on your DB.

  3. 1

    Event based systems and webhooks.

    Zapier is a good surplus.

  4. 1

    If you want the one API for all APIs solution, check out RapidAPI (https://rapidapi.com/). Zapier is another good option in that it's much more customizable.

    1. 1

      Thank you for the reply! Do you use RapidAPI on your projects? I'm a bit skeptical about the quality of API's published at RapidAPI, are the solid for production usage?

  5. 1

    Many of the authentication providers like Okta, Auth0 already gives you a way to get the access token from 3rd party services, then you can call their APIs using this token. There delicacies to store and update these access tokens with the corresponding referesh_tokens, but it is manageable if you have a thin backend. If you do not want to use these solutions or you want to integrate with a service which does not follow OAuth2 or similar standard, then you have to cook something up with yourself. You can use the corresponding library to your programming language, for example, https://github.com/python-social-auth for python, http://www.passportjs.org/ for node, Laravel Socialite, and many others. My general experience is that if you want real integration reach application (something like a Zappier clone), you have to do it yourself; otherwise, use some 3rd party service like Auth0 get something quick and working out of the box. There are a lot of small quirks, undocumented side effects, etc. with these integrations you will have to deal with if you do it yourself.

    1. 1

      Thank you for your response!

      So, if I'm understand you right, your SaaS is using Okta or Auth0 to get the token and then call 3-rd parties API's. By the way, what 3-rd parties integrations you use in your SaaS?

      1. 1

        Yes, I use to use Auth0, but then I built my own version since my set of integration exceeded their capabilities: Google, Github, Bitbucket, Gitlab, Dropbox, Slack, Contentful, etc.

        1. 1

          Got it!

          And did you developed the UI for each integration by yourself? Or you haven't any UI for this?

          What the main purpose of integrations? Is it some kind of notification? Or something more complex?

          1. 1

            No UI, just CLI. Data Migration and Transformation