@outreach/extensibility-sdk
    TypeScript icon, indicating that this package has built-in type declarations

    0.5.10 • Public • Published

    Outreach extensibility SDK

    This document contains all the information a developer needs to create an Outreach application.

    Table of content

    How it works

    When an Outreach user goes to a specific part of the Outreach application (e.g., opportunity page), the application will check if that user has installed applications for that part of the app and (if yes):

    • Add a tab with the title of the application
    • Add an iframe with the source pointing to an application hosting page
    • Send the current user contextual information to the application to initialize itself into a proper state.

    Required steps to build an Outreach application

    The extensibility framework supports a few integration methods with different coding requirements and provides a different integration level with Outreach. Each one of the methods requires one or more steps to be implemented based on the application requirements.

    1. Every application needs to have an application hosting web page, which will Outreach users see loaded as a source of application iframe. This page implementation has to follow a very small set of requirements.

      During the development phase, application creators can skip this requirement and use only a Locally hosted application page without the need to have a publicly available page.

    2. Every application also needs to create and upload a manifest file. That manifest file contains things like the URL where the application web page is located, contextual information which application needs from Outreach, details about Outreach API access, etc.

      If your application is stateless (e.g., currency exchange calculator application) or your application has independent initialization (e.g., initialize itself based on its cookie), there is no need for any additional work to be done.

      Go to manifest file page to learn more.

    3. All stateful applications would need contextual information from Outreach to initialize themselves in the proper state. For that, they need to parse from the URL a set of contextual information (e.g., opportunity id, prospect email, etc.) sent by Outreach.

      Go to host url parameters parsing page to learn more.

    4. Most of the applications would want to have deeper integration with the Outreach application (e.g., to notify Outreach users about some application event). For that, the application will need to integrate Outreach client sdk.

      Go to Outreach client SDK page to learn more.

    5. Some of the applications will need to have client access to Outreach API, and for that, they will need to add support on the application server required for obtaining and refreshing access tokens. This will include implementing additional endpoints, server to server calls to Outreach API, token caching, etc.

      Go to Outreach API access page to learn more about API access requirements.

    NOTE: This document is an early preview of the client extensibility framework whose primary purpose is to speed up the collaboration and scenario exploration with potential application creators. It will be changing at a rapid pace until the official release of the platform.

    If you have any questions/comments/concerns about the extensibility, please check the FAQ or email us at cxt-sdk@outreach.io.

    What can you make?

    There are two types of application extensions you can create with the Outreach client sdk: application extension and tab extension.

    Application extensions

    Application extension is a type of extension where the application creator wants to bring its all app to Outreach.

    alt text This type of extension has an icon in the left side menu at the same level as other Outreach icons. Clicking on that icon will load an iframe taking the whole space and showing the extension host page defined in the manifest.

    Application extension can receive only user and organisation contextual information.

    Application extension can define a special notifications endpoint, which will enable it to implement things as unread notifications badge decoration, show informational toast, etc., even before Outreach user interacted with the addon.

    Tab extensions

    Tab extension is an extension that enables you to load your application in a context of a specific account, prospect, or opportunity. Your application is being loaded as an additional tab beside other standard Outreach tabs.

    alt text

    Tab extension are loaded after the tab is being opened. In addition to the organization and user context available to application extension, they can receive current account context (account tab), current prospect context (prospect tab), and current opportunity context (opportunity tab).

    Tab extension do not support the notification feature application addons have.

    Keywords

    none

    Install

    npm i @outreach/extensibility-sdk

    DownloadsWeekly Downloads

    525

    Version

    0.5.10

    License

    MIT

    Unpacked Size

    751 kB

    Total Files

    227

    Last publish

    Collaborators

    • jason.luebke
    • dmytrokasianenko-outreach
    • huseyinokurer-outreach
    • julia.crawford
    • vincentsibal-outreach
    • marekfexa-outreach
    • karlismelderis-outreach
    • nayaksr
    • abhishankat
    • darrenli
    • viktoryia_shypitsa
    • roboxue
    • zhaopu.teng
    • dongwookim-outreach
    • paveldmitriev-outreach
    • jaylu-outreach
    • nickpollitt
    • ankitgupta-outreach
    • cluangma
    • jakubkovarik-outreach
    • thisisnish
    • yong-fu
    • gusga
    • edatoutreach
    • wanghq
    • brybrophy_outreach
    • vsleichert
    • ilyanikitin-outreach
    • andrew.brooks
    • michalnicp
    • stefan_cirlig
    • ryanjohnson-outreach
    • nkaldor
    • daniel.marques-or
    • chrisrob1111
    • dani.fenske
    • jan.ludvik
    • cameronperry-outreach
    • outreach-hanrhee
    • tonymbugua-outreach
    • edmangimelli-outreach
    • jiweicao
    • johnstrick
    • jeff-outreach
    • matt_outreach
    • pablosz
    • dcromer
    • outreach-npm
    • addison-outreach
    • richardlarocque
    • outreach-zvibo
    • bhogatemadhura
    • christiezhao
    • ghorashi
    • tomassusovsky-outreach
    • toni_ho_outreach
    • alexpotra
    • yprater
    • jundong-outreach
    • dongoutreach
    • kushal.lakhotia
    • amagdas
    • ford-outreach
    • kkerr1
    • mikeliddell
    • miroslav.stoklasa
    • predragatoutreach
    • alizhdanov-outreach
    • mvargeson
    • justinmckay
    • erik-outreach
    • brockman89
    • brybrophy
    • aocole
    • zpatrick
    • jamiekim1011
    • joshatoutreach
    • brianchesbrough
    • gracethompson
    • magwhite
    • outreach-olga
    • gabe-outreach
    • rameshv-outreach
    • pranavkedia
    • phanphan
    • vivek.rana.outreach
    • ruanjian
    • yilu19
    • keeyip-at-outreach
    • bogdlyt
    • kirkstevenjohnson
    • apotra
    • rohitmane-npm
    • berickson1
    • deregtd
    • guoweis
    • greengremlin
    • stevegcarpenter
    • dustinritchey
    • kevizhou
    • haleymendoza
    • krishna-outreach
    • jesper.holmberg.outreach
    • scott_lillibridge
    • johnjeng
    • pavelstudenyor
    • tomasbergl
    • huazhou.liu
    • shiwei.wang
    • yonggang.cao
    • commbigo
    • jakub.tomanek
    • malept
    • pavelsmejkal
    • stdout-reach
    • steven.smith
    • tonybe-outreach
    • minzhu2020
    • georgezhu
    • nikola_malovic
    • paulli
    • daniel.dostal
    • lenkavon
    • adamcarr_outreach
    • richardjshaw
    • jennylam-outreach
    • alexandr.kara
    • paras.chauhan
    • aecombs
    • kenandervisevic
    • samuel-kollat-outreach
    • lee_higgins
    • it-admin-outreach
    • martin_ptrl
    • jaredallard
    • rodolfogobbi-outreach
    • jason.didis
    • cicide
    • dmitry_ryzhkov
    • diegovillasenoror
    • kirill_glebov
    • milankonir
    • outreach-ci
    • jaysheelshah-outreach
    • denispostuoutreachio
    • armen.ayvazyan
    • carlosgjs
    • fabiomoyano
    • jack60504
    • maurizio.pucci-outreach.io
    • dave_fry
    • rasmusjosefsson-outreach
    • ericqnd
    • tomasvlach-outreach
    • jakubmiskech-outreach
    • tom.cornelius
    • jjworren
    • sirisha_pusapati
    • jschertzinger
    • andrewjacobson-outreach
    • javi.garcia
    • brent_dadamo-outreach
    • matejsuta-outreach
    • aaatoutreach
    • vladlena_sverdlova
    • petr.komarek
    • sungjeon
    • balaji.shyamkumar
    • vaithy_narayanan
    • george-e-shaw-iv-outreach
    • tonylawrence-or-npm
    • genna_altukhov
    • dmitriyaa
    • tyler.atkinson
    • plisy-outreach
    • andyamaya-outreach
    • yinfang_zhuang
    • marinamiddleton
    • crowe.jb
    • wrathofzombies
    • gilini
    • zaq-outreach
    • nick_ambrose
    • huizhou-outreach
    • heliuchuan
    • amandafry_outreach
    • lizhenwang-outreach
    • zdenekvicar
    • cleve.littlefield-outreach
    • grevych
    • zpatrick319
    • dotansimha
    • kamilkisiela
    • vigneshtv
    • urigo
    • frantisek.kaduk
    • lekterable
    • janhajek-outreach
    • alexandrmaximov-outreach
    • skatari
    • yifeih
    • gahura
    • evadnoob
    • joeyipp-outreach
    • davidsosby-outreach
    • rikifridrich-outreach
    • yenikolisnichenko
    • anton_magdziak
    • n1ru4l
    • huitaosheng
    • nissim-natanov-outreach
    • t.voslar
    • masterkidan-outreach
    • sheff146
    • reseul
    • dan.gidycz
    • andrewruan
    • tmerkel
    • danamoroso
    • radim-luza
    • adrianandrascik-outreach
    • ptriccl
    • ylanmuller-outreach
    • weihe-outreach