NAV
json

Informacje ogólne

Dane autoryzacyjne

{
  "clientId":"your-client-id-123",
  "apiKey":"your-api-key-123",
  "requestTime":1327056031488,
  "sha":"2aa3927a7dee8c2a712adb5375f5fa36dd8fe00c"
}

Każde zdalne wywołanie API, z wyjątkiem autoryzacji musi zawierać dane autoryzacyjne.

Wartość clientId znajduje się na zakładce „Integracja” menu „Ustawienia”.
Wartość apiKey to losowy ciąg znaków służący do autoryzacji.
Wartość sha generowana jest algorytmem SHA-1 z łańcucha powstałego z połączenia:
apiKey + clientId + apiSecret. ApiSecret znajduje się ma wspomnianej zakładce „Integracja”. requestTime to czas o jakim wykonywane jest zapytanie.

Wszystkie zapytania wykonywane muszą być na adresie:

http://www.salesmanago.pl/api

Na przykład

http://xyz.salesmanago.pl/api/contact/upsert

Gdzie xyz to identyfikator Twojego serwera (www lub app1, app2, app3…)

Accept: application/json, application/json
Content-Type: application/json;charset=UTF-8

Zapytanie wysyłane jest metodą HTTP POST, w przypadku, gdy użyta ma być metoda HTTP GET jest to wyraźnie zaznaczone w instrukcji użycia danej metody.

W dokumentacji znakiem * oznaczone zostały pola wymagane.

Integracja kodu monitorującego

Po aktywacji naszego konta otrzymujemy dostęp do kodu monitorującego naszą witrynę.
Kod znajdziemy na stronie głównej, widocznej zaraz po zalogowaniu (do czasu wykrycia przez SALESmanago kodu na naszej stronie), lub w menu „Ustawienia” > „Integracja”.

alt text

Skrypt[1] należy wgrać na każdą stronę naszego serwisu, zaraz przed zakończeniem sekcji „body”.
Najlepiej, gdy istnieje możliwość skrypt ten wgrać w szablon naszego serwisu, tak by sam kod znajdował się w jednym miejscu, a był drukowany identycznie na wszystkich stronach.

Przykładowo, skrypt w CMS Wordpress można wgrać do pliku „footer.php”. Oto przykład:

alt text

Po kilkunastu minutach od wdrożenia, o ile na naszej stronie pojawiają się wizyty, informacja o potrzebie wdrożenia kodu zniknie ze strony głównej SALESmanago.

Przesyłanie dodatkowych informacji monitorujących

Przykładowy kod wraz z wartością contactId:

<script type="text/javascript">  
    var _smid = "your-client-id-123";
    var _smclientid = "contactIdFromResponse-123";
</script>
<script src="http://www.salesmanago.pl/static/sm.js" type="text/javascript"/>

Alternatywnie, przesyłając formularz przez AJAX można zapisać samo ciasteczko:

    $.ajax({
        type:'POST',
        url:'/account/registerDemoVideo.htm',
        data:$("#registerForm").serialize(),
        cache:false,
        timeout:240000,
        success:function (data) {
            if (data == 'Wrong_Email') {
                alert('Podany email nie jest prawidłowy.');
                $("#email").focus();
            } else {
                createCookie('smclient', data, 365 * 10);
                $(".registeredInfo").show();
            }
        },
        error:function (data) {
            alert("Błąd – nie udało się zarejestrować");
        }});

W odpowiedzi na zapytanie /contact/upsert otrzymujemy unikatowy identyfikator. Aby usprawnić monitoring zachowania użytkowników na stronie WWW należy ten parametr przekazać przynajmniej na jednej podstronie odwiedzanej przez użytkownika – np. po zalogowaniu – w momencie logowania wykonujemy zapytanie /contact/upsert a otrzymaną wartość contactId drukujemy wraz z kodem JavaScript systemu monitorowania SALESmanago.

Integracja zdarzeń zewnętrznych poprzez JavaScript

Przy użyciu zdarzeń zewnętrznych (external events) możemy przesyłać do systemu SALESmanago dodatkowe informacje na temat kontaktów z zewnętrznych systemów. Najpopularniejszym sposobem wykorzystania zdarzeń zewnętrznych w branży eCommerce jest przesyłanie informacji o dokonanym zakupie (PURCHASE) lub porzuconym koszyku (CART) przez kontakt. Dzięki tym informacjom możemy np.:

Oczywiście istnieją inne rodzaje zdarzeń zewnętrznych, które można wykorzystać i dostosować do własnych potrzeb. Są to:

Zdarzenia zewnętrzne można przesyłać poprzez API. Informacje o tym znajdują się w naszej specyfikacji,

Drugim sposobem przesyłania zdarzeń zewnętrznych jest możliwość przesyłania ich poprzez JavaScript.
Wówczas nie musimy przekazywać tych danych przez API.

Przesyłanie zdarzeń zewnętrzynch przez JavaScript

[Krok 1] Podmiana kodu monitorującego na swojej stronie – obecny kod należy podmienić na ten znajdujący się poniżej uzupełniając odpowiednio pole ” var _smid = ” swoim indywidualnym ID klienta.

Skrypt monitorujący:

<script type="text/javascript">
    var _smid="SHORT_ID_TO_REPLACE";
    (function(w, r, a, sm, s){ 
    w['SalesmanagoObject']=r; w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}; 
    sm=document.createElement('script'); sm.type='text/javascript'; sm.async=true; sm.src=a; 
    s=document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sm,s); 
    })(window,'sm',('https:'==document.location.protocol?'https://':'http://')+'endpoint/staticism.js'); 
</script>

Endpoint oraz indywidualne ID klienta znajduje się w zakładce USTAWIENIA -> INTEGRACJE-> Dostęp przez API.

alt text

[Krok 2] Raportowanie konkretnego zdarzenia – każde zewnętrzne zdarzenie możemy raportować w następujący sposób.

Skrypt raportujący zdarzenie:

<script type="text/javascript"> 
    var d = new Date(); 
    sm('extEvent', 
    { owner: '******@******.pl',//TU PROSZĘ UZUPEŁNIĆ KONTO UŻYTKOWNIKA W SYSTEMIE 
      email: 'nowyevent1@test.pl',//EMAIL KONTAKTU 
      contactExtEventType:"PURCHASE",//TYP ZDARZENIA 
      date: d.getTime(),//DATA ZDARZENIA 
      description: 'description about transaction',//OPIS ZDARZENIA 
      products: 'p01, p02, p03',//PRODUKTY 
      location: 'location',//LOKALIZACJA 
      value: 213.32,//WARTOŚĆ (TYLKO CYFRY) 
      details: ['details', 'detail2'], //DETALE JAKO TABLICA(maks 20) 
      externalId: 'zam' + d.getTime()}//ZEWNĘTRZNE ID 
    );
</script> 

Implementacja monitoringu e-Commerce NextGen

Skrypt monitorujący:

<script type='text/javascript'>
      var _smShopId = '<-- ID_TWOJEGO_SKLEPU -->';
      (function () {
            var sm = document.createElement('script');
            sm.type = 'text/javascript';
            sm.async = true;
            sm.src = ('https:' == document.location.protocol ? 'https://' :
            'http://') + '<-- TWOJ_ENDPOINT -->.salesmanago.pl/static/smng.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(sm, s);
      })();
</script>

W celu wdrożenia funkcjonalności NextGen należy dodać dodatkowy skrypt monitorujący

alt text

dodać klasę CSS (class) “sm-pid-{UnikalneId} sm-product-list”. Na karcie produktu:

alt text

należy dodać w zaznaczonym elemencie klasę: “sm-pid-{UnikalneId} sm-product-view” UnikalneId to ID z XML produktowego.

API - Zarządzanie kontaktami

Dodawanie nowego lub modyfikacja istniejącego kontaktu

Przykładowa struktura danych zapytania:

{
  "async": true,
  "contact" : { 
        "email" : "konrad-test-1@konri.com",
        "fax" : "+48345543345",
        "name" : "Konrad Test",
        "phone" : "+48123321123",
        "company" : "Benhauer",
        "state" : "PROSPECT",
        "address":{
            "streetAddress":"Brzyczyńska 123",
            "zipCode":"43-305",
            "city":"Bielsko-Biała",
            "country":"PL"
      }
    },
  "owner" : "admin@vendor.pl",
  "newEmail" : "",
  "forceOptIn" : true,
  "forceOptOut" : false,
  "forcePhoneOptIn" : true,
  "forcePhoneOptOut" : false,
  "tags" : [ "API","ADmanago"],
  "removeTags" : [ "Test_tag","New"],
  "properties" : {
        "custom.nickname":"Konri",
        "custom.sex":"M"
        },
  "dictionaryProperties": [{
        "name": "birthday",
        "type": "DATE",
        "value": 1488927600000
        },
        {
        "name": "visits",
        "type": "NUMBER",
        "value": 42
        }
  ],
  "birthday" : "19801017",
  "province" : "Małopolska",
  "useApiDoubleOptIn":true,
  "apiDoubleOptInEmailTemplateId":null,
  "apiDoubleOptInEmailAccountId":null,
  "apiDoubleOptInEmailSubject":null,
  "lang":"PL"

}

Kontakt dodajemy wywołując metodę:
http://www.salesmanago.pl/api/contact/upsert

Podstawowe elementy jakie można podać dodając nowy kontakt w strukturze to:

async - parametr określający sposób dodawania kontaktów do systemu Salesmanago, rekomendowaną i domyślną opcją jest wartość “true”, która wykonuje proces z opóźnieniem zależnym od obciążenia systemu, jeżeli natomiast wymagane jest dodawanie kontaktów natychmiast po wysłaniu żądania należy wybrać opcję “false”.

name – nazwa kontaktu
email – email kontaktu*
phone – numer telefonu
fax – numer fax
company – firma kontaktu
birthday – data urodzenia, przekazywana jako łańcuch znaków w postaci: yyyyMMdd lub Mmdd (yyyy – 4 cyfrowy rok, MM – dwucyfrowy miesiąc, dd – dwucyfrowy dzień)
apiDoubleOptInEmailTemplateId – opcjonalny identyfikator szablonu dla double-opt-in,
apiDoubleOptInEmailAccountId – opcjonalny identyfikator konta e-mail dla double-opt-in,
apiDoubleOptInEmailSubject – opcjonalny temat wiadomości dla double-opt-in,
address – adres kontaktu
    streetAddress – ulica i numer domu
    zipCode – kod pocztowy
    city – miasto
    country – kraj

Dodatkowo do zapytania należy dołączyć informację o właścicielu kontaktu (koncie do którego kontakt zostanie przypisany):
owner – właściciel kontaktu (email konta użytkownika SALESmanago)*
Opcjonalnie możemy zmienić adres e-mail kontaktu. Należy wtedy wypełnić pole newEmail: newEmail – nowy adres email (jeżeli chcemy go zmodyfikować)

Możemy również wymusić tzw. opt-in/opt-out kontaktu. Należy wtedy wypełnić pole forceOptIn lub forceOptOut.
W przypadku braku tych pól kontakt zostanie stworzony w systemie ze statusem opt-in.

forceOptOut – wymuszenie opt-out po dodaniu/modyfikacji
forceOptIn – wymuszenie opt-in po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)
forcePhoneOptOut – wymuszenie opt-out z telefonu po dodaniu/modyfikacji
forcePhoneOptIn – wymuszenie opt-in na telefon po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)

W zapytaniu istnieje możliwość oznaczenia kontaktu tagami i usunięcia obecnych tagów.
Tagi przesyłamy jako tablica łańcuchów tekstowych w polu tags.

tags – tablica tagów kontaktu
removeTags – tablica tagów do usunięcia

Istnieje również możliwość przypisać do kontaktu dowolną ilość pól definiowanych przez użytkownika. Przesyłamy ją za pomocą mapy:

properties – definiowane przez użytkownika atrybuty kontaktu. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone.

dictionaryProperties - definiowane przez użytkownika atrybuty słownikowe, po pierwszym dodaniu danego atrybutu można go wykorzystać dla pozostały kontaktów poprzez ponowne podanie takiej samej nazwy i typu z przypisaną inną wartością.
    name - nazwa (3-255 znaków)
    type - typ (NUMBER lub DATE)
    value - liczba całkowita większa od 0

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Dodawanie nowego kontaktu

Przykładowa struktura danych zapytania:

{
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "sha" : "08924f45afc2e4fb8b652c53cdb493c7ddb846a1",
  "requestTime" : 1327059355361,
  "contact" : { 
    "email" : "konrad-test-1@konri.com",
    "fax" : "+48345543345",
    "name" : "Konrad Test",
    "phone" : "+48123321123",
    "company" : "Benhauer",
    "state" : "PROSPECT",
    "address":{
      "streetAddress":"Brzyczyńska 123",
      "zipCode":"43-305",
      "city":"Bielsko-Biała",
      "country":"PL"
    }
  },
  "owner" : "admin@vendor.pl",
  "forceOptOut" : false,
  "forcePhoneOptOut" : false,
  "tags" : [ "API",
    "ADmanago"
  ],
  "properties":{"custom.nickname":"Konri","custom.sex":"M"},
  "birthday": "19801017",
  "useApiDoubleOptIn":true,
  "lang":"PL"

}

Kontakt dodajemy wywołując metodę:
http://www.salesmanago.pl/api/contact/insert

Podstawowe elementy jakie można podać dodając nowy kontakt są identyczne jak w metodzie upsert, z wyjątkiem braku pół: forceOptIn, forcePhoneOptIn i removeTags.

Pola dostępne w zapytaniu metody insert:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255 email kontaktu
name 255 nazwa kontaktu
phone 255 numer telefonu
fax 255 numer fax
company 255 firma kontaktu
state 255 status kontaktu (PROSPECT,CUSTOMER,PROSPECT,OTHER,UNKNOWN)
externalId 255 zewnętrzny identyfikator kontaktu
birthday yyyyMMdd/Mmdd data urodzenia, przekazywana jako łańcuch znaków w postaci: yyyyMMdd lub Mmdd (yyyy – 4 cyfrowy rok, MM – dwucyfrowy miesiąc, dd – dwucyfrowy dzień)
streetAddress 255 ulica i numer domu
zipCode 255 kod pocztowy
city 255 miasto
country 255 kraj
useApiDoubleOptIn true/false opcjonalny identyfikator szablonu dla double-opt-in,
lang 255 opcjonalny temat wiadomości dla double-opt-in,
forceOptOut true/false wymuszenie opt-out po dodaniu/modyfikacji
forcePhoneOptOut true/false wymuszenie opt-out z telefonu po dodaniu/modyfikacji
tags 255/tag tablica tagów kontaktu
properties 255/detal definiowane przez użytkownika atrybuty kontaktu. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone.

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Modyfikacja istniejącego kontaktu

Przykładowa struktura danych zapytania:

{
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "email" : "konrad@salesmanago.pl",
  "contactId" : null,
  "contact" : { 
      "company" : "Benhauer Sp. z o.o. Sp. K.",
      "email" : "konrad-test-1@konri.com",
      "fax" : "+48345543345",
      "name" : "Konrad Test",
      "phone" : "+48123321123",
      "state" : "PROSPECT",
      "address":{
        "streetAddress":"Brzyczyńska 123",
        "zipCode":"43-305",
        "city":"Bielsko-Biała",
        "country":"PL"
      }
    },
  "owner" : "admin@vendor.pl",
  "forceOptIn" : true,
  "forceOptOut" : false,
  "forcePhoneOptIn" : true,
  "forcePhoneOptOut" : false,
  "requestTime" : 1327059355361,
  "sha" : "08924f45afc2e4fb8b652c53cdb493c7ddb846a1",
  "tags" : [ "API", "ADmanago"],
  "removeTags" : [ "Test_tag", "New"],
  "properties":{"custom.nickname":"Konri","custom.sex":"M"},
  "birthday": "1017"
}

Kontakt modyfikujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/update

Dane zapytania są identyczne z metodą upsert opisaną wyżej. Kontakt identyfikuje email lub contactId (zwrócony przy dodawaniu kontaktu). Rezultat zapytania przesyłany jest w odpowiedzi jako struktura JSON identycznej jak w przypadku metody upsert. W przypadku podania email'a w polu contact adres e-mail zostanie zaktualizowany.

Pola dostępne w zapytaniu metody update:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255 email kontaktu
name 255 nazwa kontaktu
phone 255 numer telefonu
fax 255 numer fax
company 255 firma kontaktu
state 255 status kontaktu (PROSPECT,CUSTOMER,PROSPECT,OTHER,UNKNOWN)
externalId 255 zewnętrzny identyfikator kontaktu
birthday yyyyMMdd/Mmdd data urodzenia, przekazywana jako łańcuch znaków w postaci: yyyyMMdd lub Mmdd (yyyy – 4 cyfrowy rok, MM – dwucyfrowy miesiąc, dd – dwucyfrowy dzień)
streetAddress 255 ulica i numer domu
zipCode 255 kod pocztowy
city 255 miasto
country 255 kraj
forceOptOut true/false wymuszenie opt-out po dodaniu/modyfikacji
forceOptIn true/false wymuszenie opt-in po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)
forcePhoneOptOut true/false wymuszenie opt-out z telefonu po dodaniu/modyfikacji
forcePhoneOptIn true/false wymuszenie opt-in na telefon po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)
tags 255/tag tablica tagów kontaktu
removeTags 255/tag tablica tagów do usunięcia
properties 255/detal definiowane przez użytkownika atrybuty kontaktu. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone.

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Dodawanie wielu kontaktów na raz

Przykładowa struktura danych zapytania:

{
  "clientId": "your-client-id-123",
  "apiKey": "your-api-key-123",
  "requestTime": 1348046897664,
  "sha": "8d893f41dd479bb0489686f04b0a169005d22559",
  "owner": "admin@vendor.pl",
  "upsertDetails": [
    {
      "newEmail": null,
      "contact": {
        "email": "batchtest2@benhauer.pl",
        "name": "Konrad Test1",
        "phone": "+48123321123",
        "fax": "+48345543345",
        "company": "Benhauer Sp. z o.o. Sp. K.",
        "externalId": null,
        "address": {
          "streetAddress": "Brzyczyńska 123",
          "zipCode": "43-305",
          "city": "Bielsko-Biała",
          "country": "PL"
        }
      },
      "tags": [
        "API",
        "ADmanago"
      ],
      "removeTags": [
        "Test_tag",
        "New"
      ],
      "properties": {
        "custom.nickname": "Konri1",
        "custom.sex": "M"
      },
      "birthday": "19801017",
      "forceOptIn" : true,
      "forceOptOut" : false,
      "forcePhoneOptIn" : true,
      "forcePhoneOptOut" : false
    },
    {
      "contact": {
        "email": "batchtest1@benhauer.pl",
        "name": "Konrad Test2",
        "phone": "+48123321123",
        "fax": "+48345543345",
        "company": "Benhauer Sp. z o.o. Sp. K.",
        "externalId": null
      },
      "newEmail": "batchtestNew@benhauer.pl",
      "forceOptIn": true,
      "forceOptOut": false,
      "forcePhoneOptIn": true,
      "forcePhoneOptOut": false,
      "tags": [
        "API",
        "ADmanago"
      ],
      "properties": {
        "custom.nickname": "Konri2",
        "custom.sex": "M"
      },
      "birthday": "19801017"
    }
  ],
  "useApiDoubleOptIn": true,
  "lang": "PL"
}

Wiele kontaktów naraz dodajemy wywołując metodę: http://www.salesmanago.pl/api/contact/batchupsert

W zapytaniu podajemy tablicę kontaktów w polu upsertDetails. Podstawowe elementy jakie można podać w elemencie tablicy contact można znaleźć powyżej w opisie metody upsert (patrz Dodawanie kontaktu).

Pola dostępne w zapytaniu metody batchupsert:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255 email kontaktu
name 255 nazwa kontaktu
phone 255 numer telefonu
fax 255 numer fax
company 255 firma kontaktu
state 255 numer fax
externalId 255 numer fax
newEmail 255 nowy email kontaktu
birthday yyyyMMdd/Mmdd data urodzenia, przekazywana jako łańcuch znaków w postaci: yyyyMMdd lub Mmdd (yyyy – 4 cyfrowy rok, MM – dwucyfrowy miesiąc, dd – dwucyfrowy dzień)
streetAddress 255 ulica i numer domu
zipCode 255 kod pocztowy
city 255 miasto
country 255 kraj
forceOptOut true/false wymuszenie opt-out po dodaniu/modyfikacji
forceOptIn true/false wymuszenie opt-in po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)
forcePhoneOptOut true/false wymuszenie opt-out z telefonu po dodaniu/modyfikacji
forcePhoneOptIn true/false wymuszenie opt-in na telefon po dodaniu/modyfikacji (o ile nie wybrano wcześniejszej opcji)
tags 255/tag tablica tagów kontaktu
removeTags 255/tag tablica tagów do usunięcia
properties 255/detal definiowane przez użytkownika atrybuty kontaktu. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone.
useApiDoubleOptIn true/false użycie opcji double opt in,
lang 255 język kontaktu,

Rezultat zapytania:

{
  "success":true,
  "message":[],
  "contactIds":{
    "batchtest2@benhauer.pl":"b257d328-2a95-41ce-915a-94b4274e6c29",
    "batchtest1@benhauer.pl":"bf4d6c03-1ca2-4b3f-8131-c28829236b02"
  }
}

W odpowiedzi otrzymujemy status zapytania oraz w przypadku sukcesu listę identyfikatorów dla kontaktów dodanych:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane),
contactIds – tablica unikatowych identyfikatorów uaktualnionego lub nowo dodanego kontaktu,
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd,

Usuwanie kontaktu

Przykładowa struktura danych zapytania:

{ 
 "apiKey" : "your-api-key-123",
 "clientId" : "your-client-id-123",
 "sha" : "08924f45afc2e4fb8b652c53cdb493c7ddb846a1",
 "requestTime" : 1327059355361,
 "email" : "test@salesmanago.pl",
 "owner" : "admin@vendor.pl"
}

Kontakt usuwamy wywołując metodę:
http://www.salesmanago.pl/api/contact/delete

Kontakt można oznaczyć jako usunięty.

Pola dostępne w zapytaniu metody delete:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Sprawdzanie czy kontakt jest już zarejestrowany

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id",
  "apiKey": "api-key-123",
  "requestTime": 1481532212995,
  "sha": "abcd509ac6867955a5333d6eb0c460455c74ccc6",
  "email": "***@gmail.com",
  "owner": "admin@vendor.pl"
}

Istnienie kontaktu w bazie sprawdzamy metodą:
http://www.salesmanago.pl/api/contact/hasContact

Pola dostępne w zapytaniu metody hasContact:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255 email szukanego kontaktu

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "result": true,
  "contactId": "99cdc5fe-7376-436e-acb5-7180c97dadb6"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
result - rezultat zapytania
contactId - id wyszukanego kontaktu

Import podstawowych danych kontaktów po adresie email

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id-123",
  "apiKey": "api-key-123",
  "requestTime": 1481533177752,
  "sha": "abcd56045567955a533c74ccc6683d09ac6eb0c4",
  "owner": "admin@vendor.pl",
  "email": [
    "piotr***@gmail.com"
  ]
}

Listę podstawowych danych kontaktów importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/basic

Pola dostępne w zapytaniu metody basic:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255/email tablica adresów email importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "contacts": [
    {
      "name": "Piotr",
      "email": "piotr****@gmail.com",
      "phone": "500100100",
      "fax": "",
      "score": 1920,
      "state": "regular",
      "optedOut": false,
      "optedOutPhone": false,
      "deleted": false,
      "invalid": false,
      "company": "Benhauer",
      "externalId": null,
      "address": {
        "streetAddress": "Grzegórzecka 21",
        "zipCode": "30-555",
        "city": "Kraków",
        "country": "Polska"
      },
      "contactId": "99cdc5fe-7376-436e-acb5-7180c97dadb6",
      "birthdayYear": null,
      "birthdayMonth": null,
      "birthdayDay": null,
      "modifiedOn": 1479215570000,
      "createdOn": 1432887727000,
      "lastVisit": 1481528930000
    }
  ]
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
contacts – importowane kontakty
name – nazwa kontaktu
email – e-mail kontaktu
phone – numer telefonu
fax – numer fax kontaktu
score – liczba punktów
state – status kontaktu
optedOut – czy kontakt wycofał zgodę na otrzymywanie maili,
optedOutPhone - czy kontakt wycofał zgodę na kontakt telefoniczny
deleted – czy kontakt został usunięty
invalid – czy kontakt jest niepoprawny
company – nazwa firmy kontaktu
externalId – identyfikator zewnętrzny kontaktu
address – adres kontaktu
   streetAddress – ulica i numer domu
   zipCode – kod pocztowy
   city – miasto
   country – kraj
contactId - identyfikator kontaktu
birthdayYear – rok urodzenia kontaktu
birthdayMonth – miesiąc urodzenia kontaktu
birthdayDay – dzień urodzin
modifiedOn – data ostatniej modyfikacji kontaktu
createdOn – data stworzenia kontaktu,
lastVisit – data ostatniej wizyty kontaktu,

Import podstawowych danych kontaktów po ID kontaktu

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id-123",
  "apiKey": "api-key-123",
  "requestTime": 1481535098734,
  "sha": "abcd56045567955a533c74ccc6683d09ac6eb0c4",
  "owner": "admin@vendor.pl",
  "id": [
    "99cdc5fe-7376-436e-acb5-7180c97dadb6"
  ]
}

Listę podstawowych danych kontaktów importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/basicById

Pola dostępne w zapytaniu metody basicById:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
id* 255/id tablica identyfikatorów importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "contacts": [
    {
      "name": "Piotr",
      "email": "piotr****@gmail.com",
      "phone": "500100100",
      "fax": "",
      "score": 1920,
      "state": "regular",
      "optedOut": false,
      "optedOutPhone": false,
      "deleted": false,
      "invalid": false,
      "company": "Benhauer",
      "externalId": null,
      "address": {
        "streetAddress": "Grzegórzecka 21",
        "zipCode": "30-555",
        "city": "Kraków",
        "country": "Polska"
      },
      "contactId": "99cdc5fe-7376-436e-acb5-7180c97dadb6",
      "birthdayYear": null,
      "birthdayMonth": null,
      "birthdayDay": null,
      "modifiedOn": 1479215570000,
      "createdOn": 1432887727000,
      "lastVisit": 1481528930000
    }
  ]
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
contacts – importowane kontakty
name – nazwa kontaktu
email – e-mail kontaktu
phone – numer telefonu
fax – numer fax kontaktu
score – liczba punktów
state – status kontaktu
optedOut – czy kontakt wycofał zgodę na otrzymywanie maili,
optedOutPhone - czy kontakt wycofał zgodę na kontakt telefoniczny
deleted – czy kontakt został usunięty
invalid – czy kontakt jest niepoprawny
company – nazwa firmy kontaktu
externalId – identyfikator zewnętrzny kontaktu
address – adres kontaktu
   streetAddress – ulica i numer domu
   zipCode – kod pocztowy
   city – miasto
   country – kraj
contactId - identyfikator kontaktu
birthdayYear – rok urodzenia kontaktu
birthdayMonth – miesiąc urodzenia kontaktu
birthdayDay – dzień urodzin
modifiedOn – data ostatniej modyfikacji kontaktu
createdOn – data stworzenia kontaktu,
lastVisit – data ostatniej wizyty kontaktu,

Import kontaktów po adresie e-mail dla danego właściciela

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "email" : [ "****@gmail.com" ],
  "owner" : "admin@vendor.pl",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7"
}

Kontakty importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/list

Pola dostępne w zapytaniu metody list:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255/email tablica adresów email importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "contacts": [
    {
      "id": "99cdc5fe-7376-436e-acb5-7180c97dadb6",
      "name": "Konrad",
      "email": "your-contact-email@mail.com",
      "phone": "123456789",
      "fax": "987654321",
      "score": 775,
      "state": "PROSPECT",
      "optedOut": true,
      "optedOutPhone": false,
      "deleted": false,
      "invalid": false,
      "company": "Benhauer",
      "externalId": "externalId",
      "address": {
        "streetAddress": "Grzegórzecka 21",
        "zipCode": "",
        "city": "Kraków",
        "country": "Polska"
      },
      "birthdayYear": 2000,
      "birthdayMonth": 1,
      "birthdayDay": 1,
      "province": "Małopolska",
      "mainContactOwner": "admin@vendor.pl",
      "modifiedOn": 1479209074000,
      "createdOn": 1432887727000,
      "contactVisits": [
        {
          "conversationIntId": null,
          "host": "10.10.10.10",
          "time": 1328050810504,
          "duration": null,
          "visitSource": "NEXT",
          "visitSourceHost": "salesmanago.pl",
          "visitSourceKeywords": null,
          "visitScore": 1,
          "url": "/test.htm",
          "location": null
        }
      ],
      "contactTags": [
        {
          "tag": "ADMANAGO",
          "tagName": "ADMANAGO",
          "score": 12,
          "createdOn": 1432887757000,
          "tagWithScore": "ADMANAGO (1)"
        }
      ],
      "contactEvents": [
        {
          "date": 1432887757000,
          "description": "Note",
          "detail1": null,
          "detail2": null,
          "detail3": null,
          "detail4": null,
          "detail5": null
        }
      ],
      "emailMessages": [
        {
          "name": "Email",
          "subject": "Temat",
          "date": 1479209121000,
          "sent": false,
          "dateSent": null,
          "opened": false,
          "dateOpened": null,
          "clicked": false,
          "dateClicked": null,
          "emailConversation": 25584162,
          "deliveryStatus": null
        }
      ],
      "properties": [
        {
          "name": "detail",
          "value": "detail-value"
        }
      ],
      "contactFunnels": [
        {
          "salesFunnel": "SalesFunnel 1",
          "salesFunnelId": "5561397c-9792-4b60-aed1-a045b86c6b13",
          "salesStage": "Stage",
          "salesStageId": "de0cf594-b999-438a-b1f0-8578c36a8da5"
        }
      ],
      "contactNotes": [
        {
          "note": "Note",
          "date": 1479208770000,
          "priv": false
        }
      ],
      "contactTasks": [
        {
          "id": "395c5276-a40f-417c-bee8-1d6e80373adb",
          "note": "Task",
          "date": 1479250800000,
          "cc": "",
          "reminder": 1479249900000
        }
      ],
      "incomingEmailMessages": [
        {
          "subject": "Temat",
          "date": 1479209971000
        }
      ],
      "contactExtEvents": [
        {
          "eventId": "bd2fd558-29da-49b7-be31-6ee551cd5e13",
          "date": 1433449419000,
          "description": "Cart",
          "products": "7,6",
          "location": null,
          "value": 57.69,
          "contactExtEventType": "CART",
          "detail1": null,
          "detail2": null,
          "detail3": null,
          "detail4": null,
          "detail5": null,
          "detail6": null,
          "detail7": null,
          "detail8": null,
          "detail9": null,
          "detail10": null,
          "detail11": null,
          "detail12": null,
          "detail13": null,
          "detail14": null,
          "detail15": null,
          "detail16": null,
          "detail17": null,
          "detail18": null,
          "detail19": null,
          "detail20": null,
          "externalId": null
        }
      ],
      "coupons": [
        {
          "name": "Kupon",
          "coupon": "SB173",
          "validTo": 1480245622000
        }
      ],
      "smsMessages": [
        {
          "createdDate": 1479209040000,
          "dateSent": 1479209971000,
          "dateDelivered": null,
          "deliveryStatus": null,
          "dateReplied": null,
          "replayMsg": null,
          "content": "Test",
          "sentBy": "admin@vendor.pl"
        }
      ],
      "modifiedOn": 1479209074000,
      "createdOn": 1432887727000
    }
  ]
}

W rezultacie zapytania otrzymujemy:

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
contacts – importowane kontakty
id – identyfikator kontaktu
name – imię kontaktu
email – e-mail kontaktu
phone – numer telefonu
fax – numer fax kontaktu
score – liczba punktów
state – status kontaktu
optedOut – czy kontakt wycofał zgodę na otrzymywanie maili,
optedOutPhone - czy kontakt wycofał zgodę na kontakt telefoniczny
deleted – czy kontakt został usunięty
invalid – czy kontakt jest niepoprawny
company – nazwa firmy kontaktu
externalId – identyfikator zewnętrzny kontaktu
  address – adres kontaktu
   streetAddress – ulica i numer domu
   zipCode – kod pocztowy
   city – miasto
   country – kraj
  birthdayYear – rok urodzenia kontaktu
  birthdayMonth – miesiąc urodzenia kontaktu
  birthdayDay – dzień urodzin
  province - województwo
  mainContactOwner – identyfikator głównego właściciela kontaktu
  modifiedOn – data ostatniej modyfikacji kontaktu
  createdOn – data stworzenia kontaktu,
contactVisits – lista wizyt kontaktu
  conversationIntId – identyfikator mailingu z którego pochodzi wizyta
  host - strona którą odwiedzał kontakt
  time - data wizyty
  duration - czas trwania
  visitSource – źródło wizyty, możliwe wartości tego pola to:
EMAIL_CONVERSATION - wejście z maila (kliknięcie w link)
SEARCH_ENGINE - wejście z wyszukiwarki
ADVERTISEMENT - wejście z boksu reklamowego (AdWords)
REFERRER - wejście z witryny odsyłającej
  DIRECT - wejście bezpośrednie, lub przejście na kolejną stronę
  visitSourceHost - host odsyłający (refferer)
  visitSourceKeywords - słowa kluczowe
  visitScore – ilość punktów wizyty
  url – adres odwiedzonej strony
  location - lokalizacja
contactTags – tagi kontaktu
  tag – tekst tagu
  tagName – nazwa tagu
  score – ilośc punktów tagu
  createdOn – data nadania tagu
  tagWithScore – nazwa tagu wraz z ilością punktów
contactEvents – wydarzenia
  date – data wystąpienia wydarzenia
  description – opis wydarzenia
  detail1-5 – detale wydarzenia
emailMessages – wiadomość email
  name – Nazwa wiadomości
  subject – Temat wiadomości
  date – data stworzenia
  sent – czy wiadomość została wysłana
  dateSent – data wysłania
  opened – czy wiadomość została otwarta
  dateOpened – data otwarcia wiadomości
  clicked – czy wiadomość została kliknięta
  dateClicked – data kliknięcia wiadomości
  emailConversation – identyfikator konwersacji
  deliveryStatus – status doręczenia
properties – szczegóły kontaktu
  name – nazwa szczegółu
  value – wartość szczegółu
contactFunnels – lejki sprzedażowe
  salesFunnel – nazwa lejka
  salesFunnelId – identyfikator lejka
  salesStage – nazwa etapu lejka
  salesStageId – identyfikator lejka
contactNotes - notatki
  note – treść notatki
  date – data utworzenia notatki
  priv – czy wiadomość jest prywatna
contactTasks – zadania
  id – identyfikator zadania
  note – treść zadania
  date – data utworzenia zadania
  cc – mail na który ma zostać wysłana kopia przypomnienia
  reminder – data przypomnienia o zadaniu
incomingEmailMessages – nadchodzące wiadomości email
  subject – temat wiadomości
  date – planowana data wysłania
contactExtEvents – zdarzenia zewnętrzne
  eventId – identyfikator zdarzenia,
  date – data zdarzenia
  description – opis zdarzenia
  products – wartość kolumny produkty (np. identyfikatory)
  location – lokalizacja
  value – wartość zdarzenia
  contactExtEventType – typ zdarzenia
  detail1-20 – detale zdarzenia (max 20)
  externalId – zewnętrzny identyfikator zdarzenia.
coupons - kupony
  name – nazwa kuponu
  coupon – ciąg znaków kuponu
  validTo – data ważności kuponu
smsMessages – wiadomości sms
  createdDate – data stworzenia wiadomości
  dateSent – data wysłania wiadomości
  dateDelivered – data dostarczenia wiadomości
  deliveryStatus – status dostarczenia
  dateReplied – data otrzymania odpowiedzi
  replayMsg – treść odpowiedzi
  content – zawartość wiadomości
  sentBy – e-mail osoby wysyłającej wiadomości

Import kontaktów po ID kontaktu dla danego właściciela

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "contactId" : [ "123-XYZ" ],
  "owner" : "admin@vendor.pl",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7"
}

Kontakty po ID importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/listById

Pola dostępne w zapytaniu metody listById:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
contactId* 255 tablica identyfikatorów importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania przesyłany jest w odpowiedzi jako struktura JSON identyczna z wcześniejszym zapytaniem.

Import kontaktów po adresie email

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "email" : [ "****@gmail.com" ],
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7"
}

Kontakty po adresie email ( bez względu na właściciela) importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/listAll

Pola dostępne w zapytaniu metody listAll:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email* 255 tablica adresów email importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania przesyłany jest w odpowiedzi jako struktura JSON identyczna z wcześniejszym zapytaniem.

Import kontaktów po ID

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "email" : [ "****@gmail.com" ],
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7"
}

Kontakty po adresie email ( bez względu na właściciela) importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/listAllById

Pola dostępne w zapytaniu metody listAllById:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
contactId* 255 tablica identyfikatorów importowanych kontaktów ( max 50 konatków na raz )

Rezultat zapytania przesyłany jest w odpowiedzi jako struktura JSON identyczna z wcześniejszym zapytaniem.

Stronicowana lista kontaktów dla danego właściciela

Przykładowa struktura danych zapytania:

{
  "clientId": "jaco",
  "apiKey": "jaco",
  "requestTime": 1481206581347,
  "sha": "627e5189c02a73bb37dd660caefb8a75c5b128b3",
  "owner": "admin@admin.pl",
  "page": 1,
  "size": 2
}

Kontakty podzielone na części importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/paginatedListById

Pola dostępne w zapytaniu metody paginatedListById:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
sha* - wygenerowany sha
owner* - mail użytkownika
requestTime* - czas wykonania żądania (ms)
page* - aktualnie zwracana strona wyników
size* 1000 rozmiar tablicy zwracanych wyników

Rezultat zapytania:

{
    "success": true,
    "message": [],
    "contacts": [
        {
            "id": "c10019fd-58f2-4a3b-8461-524dc9e8298c",
            "name": "jac jacek",
            "email": "jaco@jaco.pl",
            "phone": null,
            "fax": null,
            "score": 0,
            "state": "PROSPECT",
            "optedOut": false,
            "optedOutPhone": false,
            "deleted": false,
            "invalid": false,
            "company": null,
            "externalId": null,
            "address": null,
            "birthdayYear": null,
            "birthdayMonth": null,
            "birthdayDay": null,
            "province": "",
            "mainContactOwner": "admin@admin.pl",
            "contactVisits": [],
            "contactTags": [
                {
                    "tag": "TAG",
                    "tagName": "TAG",
                    "score": 1,
                    "createdOn": 1500625819000,
                    "tagWithScore": "TAG (1)"
                }
            ],
            "contactEvents": [],
            "emailMessages": [],
            "properties": [],
            "contactFunnels": [],
            "contactNotes": [],
            "contactTasks": [
                {
                    "id": "f5ada145-ebc8-4be0-bad5-3df34f3cfecd",
                    "note": "",
                    "date": 1499378400000,
                    "cc": "",
                    "reminder": 1499377500000
                },
                {
                    "id": "708aa28a-fd6a-44ea-9652-b88cf73496d4",
                    "note": "",
                    "date": 1499378400000,
                    "cc": "xyz@xyz.xyz",
                    "reminder": 1499376600000
                }
            ],
            "incomingEmailMessages": [],
            "contactExtEvents": [],
            "coupons": [],
            "smsMessages": [],
            "modifiedOn": 1500626587000,
            "createdOn": 1500559084000
        },
        {
            "id": "d256329b-736b-11e7-b8f0-f07959164fe8",
            "name": "test.mokrysz+2073importdataurodzin@gmail.com",
            "email": "test.mokrysz+2073importdataurodzin@gmail.com",
            "phone": null,
            "fax": null,
            "score": 0,
            "state": "PROSPECT",
            "optedOut": false,
            "optedOutPhone": false,
            "deleted": false,
            "invalid": false,
            "company": null,
            "externalId": null,
            "address": null,
            "birthdayYear": "1985",
            "birthdayMonth": "5",
            "birthdayDay": "30",
            "province": "",
            "mainContactOwner": "admin@admin.pl",
            "contactVisits": [],
            "contactTags": [],
            "contactEvents": [],
            "emailMessages": [],
            "properties": [],
            "contactFunnels": [],
            "contactNotes": [],
            "contactTasks": [],
            "incomingEmailMessages": [],
            "contactExtEvents": [],
            "coupons": [],
            "smsMessages": [],
            "modifiedOn": 1501229258000,
            "createdOn": 1501229258000
        }
    ],
    "hasMore": true
}

W rezultacie zapytania otrzymujemy:

hasMore – (wartość logiczna) informuje czy są dostępne kolejne strony rezultatów

Rezultat zapytania przesyłany jest w odpowiedzi jako struktura JSON identyczna z wcześniejszym zapytaniem.

Import listy ostatnio zmodyfikowanych kontaktów

Przykładowa struktura danych zapytania:

{ 
    "apiKey" : "your-api-key-123",
    "clientId" : "your-client-id-123",
    "requestTime":1362056589362,
    "sha":"64656d78b80d5df677700dabd363e1ffe51b59a7",
    "owner":"admin@vendor.pl",
    "from":1359673200361,
    "to":1363042800362
}

Kontakty importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/modifiedContacts

Pola dostępne w zapytaniu metody modifiedContacts:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
from* 255 początkowy zakres dat modyfikacji
to* 255 końcowy zakres dat modyfikacji

Rezultat zapytania:

{
    "success":true,
    "message":[],
    "modifiedContacts":[
        {
            "id":"f66ca32b-c117-4b52-b3b8-863be077e710",
            "email":"aleksander.***@benhauer.pl"
        },
        {
            "id":"426e0ef8-675f-47fc-8ea8-745ac1706904",
            "email":"konrad.***@salesmanago.pl"
        },
        {
            "id":"1775d70e-cd61-4dd6-983a-64f067486adf",
            "email":"marek.***@salesmanago.pl"
        }
    ]
}

W rezultacie zapytania otrzymujemy:

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
modifiedContacts – kontakty zmodyfikowane w podanym przedziale czasu,
  id – id kontaktu
  email – email kontaktu

Stronicowana lista ostatnio modyfikowanych kontaktów

Przykładowa struktura danych zapytania:

{
  "clientId": "jaco",
  "apiKey": "jaco",
  "requestTime": 1481206581347,
  "sha": "627e5189c02a73bb37dd660caefb8a75c5b128b3",
  "owner": "admin@admin.pl",
  "from" : 0,
  "to": 100000000000000,
  "page" : 1,
  "size" : 2
}

Kontakty podzielone na części importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/paginatedModifiedContacts

Pola dostępne w zapytaniu metody paginatedModifiedContacts:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
sha* - wygenerowany sha
owner* - mail użytkownika
requestTime* - czas wykonania żądania (ms)
from* - data modyfikacji (ms), od której nastąpi wyszukanie kontaktów
to* - data modyfikacji (ms), do której będą wyszukiwane kontakty
page* - aktualnie zwracana strona wyników
size* 1000 rozmiar tablicy zwracanych wyników

Rezultat zapytania:

{
    "success": true,
    "message": [],
    "modifiedContacts": [
        {
            "id": "c10019fd-58f2-4a3b-8461-524dc9e8298c",
            "email": "jaco@jaco.pl"
        },
        {
            "id": "d256329b-736b-11e7-b8f0-f07959164fe8",
            "email": "test.mokrysz+2073importdataurodzin@gmail.com"
        }
    ],
    "hasMore": true
}

W rezultacie zapytania otrzymujemy:

hasMore – (wartość logiczna) informuje czy czy są dostępne kolejne strony z wynikami modifiedContacts – tablica obiektów kontaktów zawierająca pola ‘id’ i 'email’
  id – identyfikator kontaktu
  email – E-mail kontaktu

Import listy ostatnio stworzonych kontaktów

Przykładowa struktura danych zapytania:

{
  "clientId": "h4jsu6pc5txybj04",
  "apiKey": "qwetreryuii",
  "requestTime": 1481531514145,
  "sha": "abcd509ac6eb0c460455c74ccc66867955a5333d",
  "owner": "admin@vendor.pl",
  "from": 1478939514146,
  "to": 1481531514132
}

Kontakty importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/createdContacts

Pola dostępne w zapytaniu metody createdContacts:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
from* 255 początkowy zakres dat stworzenia
to* 255 końcowy zakres dat stworzenia

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "createdContacts": [
    {
      "id": "c3477890-3da7-4010-96d0-45aab0586b7f",
      "email": "***@gmail.com"
    }
  ]
}

W rezultacie zapytania otrzymujemy:

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
createdContacts – kontakty zmodyfikowane w podanym przedziale czasu,
  id – id kontaktu
  email – email kontaktu

Aktywność kontaktów

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "from":1328050800504,
  "to":1333231200504,
  "allVisits":true,
  "ipDetails":true
}

Z SALESmanago możemy pobrać informacje o aktywności kontaktów w danym okresie. W tym celu wykonujemy metodę:
http://www.salesmanago.pl/api/contact/recentActivity

Pola dostępne w zapytaniu metody recentActivity:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
from* 255 data początkowa (timestamp, czyli czas jaki upłynął w milisekundach od północy 1 stycznia 1970 UTC)
to* 255 data końcowa (timestamp, czyli czas jaki upłynął w milisekundach od północy 1 stycznia 1970 UTC)
allVisits true/false w przypadku ustawienia na true SALESmanago zwróci w detalach odwiedzin informacje o wszystkich stronach otwartych przez klienta w wybranym okresie
ipDetails true/false w przypadku ustawienia na true SALESmanago zwróci w detalach odwiedzin informacje dodatkowe wyszukane dla IP klienta

Rezultat zapytania:

{
    "success":true,
    "message":[],
    "monitoredContacts": 12300,
    "totalContacts":234000,
    "recentActivities": {
        "from":1328050800504,
        "to":1333231200504,
        "customers":[{
        "uuid": 191615173,
            "host": "salesmanago.pl",
            "time":1330239675000,
            "duration":22000,
            "visitSource":"REFERRER",
            "visitSourceHost":null,
            "visitSourceKeywords":"localhost",
            "visitSourceDetails":null,
            "visitScore":120,
            "client":"Benhauer Sp. z o.o. Sp. K. - Konrad Pawlus",
            "email":"konradpawlus@gmail.com",
            "contactId":"1d8cba47-f4b2-4efe-8250-5bdab5346628",
        "url": "/test.htm",
            "ipOrganization": "TP SA",
            "vid": 7,
            "cid": null,
            "ipDetails": {
                "ip" : "123.123.123.123",
                "countryCode" : "PL",
                "countryName" : "Poland",
                "regionCode" : "77",
                "regionName" : "Malopolskie",
                "city" : "Cracow",
                "postalCode" : "",
                "latitude" : "50.083300",
                "longitude" : "19.916700",
                "isp" : "Neostrada Plus",
                "organization" : "Neostrada Plus"
             },
                "contactVisits": [{ "conversationIntId": null,
                "host": "10.10.10.10",
                "time": 1328050810504,
                "duration": null,
                "visitSource": "NEXT",
                "visitSourceHost": "salesmanago.pl",
                "visitSourceKeywords": null,
                "visitScore": 1,
                "url": "/test.htm",
                "location": null,
                "minutesAgo": 8,
                "daysAgo": 1
            }]}],
        "partners":["... jw. ..."],
        "prospects":["... jw. ..."],
        "anonymous":["... jw. ..."],
        "visitSources": [
            {"label": "example.com", "value": 123}, 
            {"label": "other", "value": 1432}
        ],
        "visitSearchTerms": [
            {"label": "tell me google", "value": 123}, 
            {"label": "what is life?", "value": 1432},
        ],
        "visitStats": [
            {
                "date": 1330239675000, 
                "partnersVisits": 123,
                "prospectsVisits": 234,
                "customersVisits": 456,
                "otherVisits": 4321
            }
        ]
    }
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
monitoredContacts – ilość monitorowanych kontaktów
totalContacts – ilość wszystkich kontaktów
recentActivity – struktura składająca się z trzech tablic wizyt: klientów (customers), partnerów (partners), potencjalnych klientów (prospects).
from – data początkowa
to – data końcowa
customers – lista wizyt klientów
partners – lista wizyt partnerów
prospects – lista wizyt potencjalnych klientów
anonymous – lista wizyt anonimowych
 element wizyty klienta w listach:
  host – strona która była odwiedzana
  time – czas wizyty
  duration – czas trwania
  visitSource – zasoby wizyty
  visitSourceKeywords – słowa kluczowe
  visitSourceHost – host
  visitSourceDetails – detale wizyt
  visitScore – liczba punktów
  url – URL odwiedzonej strony
  client – nazwa klienta
  email – email klienta
  contactId – unikatowy identyfikator klienta,
  vid - ID sprzedawcy
  cid - ID kontaktu
  ipDetails – detale zdekodowane z IP klienta
   ip – numer IP
   countryCode – kod ISO kraju (2-znaki)
   countryName – nazwa kraju
   regionCode – kod regionu
   regionName – nazwa regionu
   city – miasto
   postalCode – kod pocztowy
   latitude – szerokość geograficzna
   longitude – długość geograficzna
   isp – nazwa ISP
   organization – nazwa organizacji
  contactVisits – wizyty kontaktu
   conversationIntId – ID konwersji
   time – czas wizyty
   duration – czas trwania
   visitSource – zasoby wizyty
   visitSourceKeywords – słowa kluczowe
   visitSourceHost – host
   visitScore – liczba punktów
   url – URL odwiedzonej strony
   location – lokalizacja wizyty
   minutesAgo – ilość minut od wizyty
   daysAgo – ilość dni od wizyty
visitSources – lista źródeł odwiedzin:
  label – nazwa źródła
  value – ilość odwiedzin
visitSearchTerms – lista wyszukiwanych fraz:
  label – wyszukiwana fraza
  value – ilość odwiedzin
visitStats – statystyki wizyt z ostatniego tygodnia:
  date – czas wizyty
  partnersVisits – ilość wizyt partnerów
  prospectsVisits – ilość wizyt potencjalnych klientów
  customersVisits – ilość wizyt klientów
  otherVisits – ilość innych wizyt

Stronicowana lista kontaktów

Przykładowa struktura danych zapytania:

{
  "clientId": "clientId",
  "apiKey": "api-key-123",
  "requestTime": 1481206581347,
  "sha": "5333dabcd509455c74ccc6ac6eb0c4606867955a",
  "owner": "admin@vendor.pl",
  "page": 0,
  "size": 100
}

Kontakty podzielone na części importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/paginatedContactList

Pola dostępne w zapytaniu metody paginatedContactList:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
page* - numer strony kontaków
size* - ilość kontaktów na jednej stronie (max 1000)

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "contacts": ["..."],
  "hasMore": true
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
contacts – tablica kontaktów o strukturze identycznej jak w metodzie contact/list
hasMore - wartość logiczna określająca, czy istnieje kolejna partia kontaktów

Zmiana głównego właściciela kontaktu

Przykładowa struktura danych zapytania:

{
   "clientId": "your-client-id-123",
   "apiKey": "your-api-key-123",
   "requestTime": "1327056031488",
   "sha": "2aa3927a7dee8c2a712adb5375f5fa36dd8fe00c",
   "contact": "contact@email.com",
   "newOwner": "newOwner@email.com"
}

Nowego właściciela ustawiamy wywołując metodę:
http://www.salesmanago.pl/api/contact/setMainOwner

Pola dostępne w zapytaniu metody recentActivity:

Pole Max. długość Opis
contact* 255 adres e-mail kontaktu
newOwner* 255 nowy główny właściciel kontaktu (email konta użytkownika SALESmanago)

Rezultat zapytania:

{
   "success": true,
   "message": []
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Zarządzanie kuponami

Użycie kuponu dla kontaktu

Przykładowa struktura danych zapytania:

{ 
 "apiKey" : "your-api-key-123",
 "clientId" : "your-client-id-123",
 "sha" : "08924f45afc2e4fb8b652c53cdb493c7ddb846a1",
 "requestTime" : 1327059355361,
 "email" : "test@salesmanago.pl",
 "coupon" : "SAMPLE-COUPON-123"
}

Kupon zniżkowy dla kontaktu można oznaczyć jako użyty wywołując metodę:
http://www.salesmanago.pl/api/contact/useContactCoupon

Pola dostępne w zapytaniu metody useContactCoupon:

Pole Max. długość Opis
email* 255 email kontaktu
coupon* 255 nazwa kuponu

Zwrócony zostanie rezultat used/error informujący o rezultacie zapytania.

Dodanie kuponu dla kontaktu

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id",
  "apiKey": "api-key-123",
  "requestTime": 1481528920123,
  "sha": "abcd5460455c09ac6eb0c74cc333dc66867955a5",
  "name": "Coupon123",
  "email": "***@gmail.com",
  "length": 7,
  "valid": 1484207320124,
  "coupon": "couponVal"
}

Kupon zniżkowy dla kontaktu można dodać wywołując metodę:
http://www.salesmanago.pl/api/contact/addContactCoupon

Pola dostępne w zapytaniu metody addContactCoupon:

Pole Max. długość Opis
email* 255 email kontaktu
name* 255 nazwa kuponu
length - długość kuponu w przypadku automatycznego generowania
valid* 255 data ważności kuponu
coupon 255 opcjonalna wartość kuponu, jeżeli pole będzie puste, to kupon zostanie wygenerowany

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "result": null,
  "coupon": "couponVal"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
result - rezultat zapytania
coupon - wartość stworzonego kuponu

API - Lejki

Dodawanie lejka

Przykładowa struktura danych zapytania:

{
  "clientId": "clientId",
  "apiKey": "apiKey",
  "requestTime": 1234567896541,
  "sha": "4f69782e826841f794080cae87648e42",
  "owner": "emailOwnera",
  "funnel": "nazwa lejka",
  "group": "grupa lejka",
  "potValue": "domyślna wartość kontaków",
  "stages" : [
    {"name": "nazwa etapu", "order": 1},
    {"name": "druga nazwa etapu", "order": 2}
  ]
}

Dodajemy lejek wywołując metodę:
http://www.salesmanago.pl/api/funnel/add

Pola dostępne w zapytaniu metody add:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
requestTime* - czas wykonania żądania (ms)
sha* - wygenerowany sha
owner* - mail użytkownika
funnel* - nazwa lejka
group* - grupa lejka
potValue* - domyślna wartość kontaków
stages* - lista etapów lejka

Rezultat zapytania:

{
  "success": true,
  "message": [
    "Funnel nazwa_lejka was added."
  ]
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Dodawanie kontaktów do lejka

Przykładowa struktura danych zapytania:

{
  "clientId": "ye4vodnswfo6zp75",
  "apiKey": "qwertgfdsa1234",
  "requestTime": 1496399754907,
  "sha": "07f7333f11745f30e1bd5adec2092d89ab2f00a7",
  "owner": "admin@vendor.pl",
  "funnel": "nazwa lejka",
  "stage": "nazwa etapu",
  "potValue": "wartosć kontaktów dodawanych",
  "modify": true,
  "contacts": [
    {"addresseeType": "EMAIL",
      "value": "test1@test.pl, test2@test.pl, test3@test.pl"
    }
  ]
}

Dodajemy kontakt do lejka wywołując metodę:
http://www.salesmanago.pl/api/funnel/addContact

Pola dostępne w zapytaniu metody addContact:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
requestTime* - czas wykonania żądania (ms)
sha* - wygenerowany sha
owner* - mail użytkownika
funnel* - nazwa lejka
stage* - nazwa etapu
potValue* - wartosć kontaktów dodawanych
modify* - (wartość logiczna) kontakt ma zostać oznaczony jako zmodyfikowany przy dodaniu do lejka
contacts* - adres e-mail kontaktu, jego identyfikator, tag lub lejek

Usuwanie lejka/etapu

Przykładowa struktura danych zapytania:

{
  "clientId": "clientId",
  "apiKey": "apiKey",
  "requestTime": 1234567896541,
  "sha": "4f69782e826841f794080cae87648e42",
  "owner": "emailOwnera",
  "funnel": "nazwa lejka",
  "stage": "nazwa etapu -"
}

Lejek/etap usuwamy wywołując metodę:
http://www.salesmanago.pl/api/funnel/delete

Pola dostępne w zapytaniu metody delete:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
requestTime* - czas wykonania żądania (ms)
sha* - wygenerowany sha
owner* - mail użytkownika
funnel* - nazwa lejka
stage* - nazwa etapu

stage - parametr opcjonalny - gdy pusty, metoda usuwa cały lejek, gdy uzupełniony usuwa wybrany etap w lejku

Rezultat zapytania:

{
  "success": true,
  "message": [
    "Specified funnel stage will be deleted in a few seconds"
  ]
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Pobieranie ilości kontaktów w lejku/etapie

Przykładowa struktura danych zapytania:

{
  "clientId": "clientId",
  "apiKey": "apiKey",
  "requestTime": 1234567896541,
  "sha": "4f69782e826841f794080cae87648e42",
  "owner": "emailOwnera",
  "funnel": "nazwa lejka",
  "stage": "nazwa etapu -"
}

Pobieramy ilość kontaktów wywołując metodę:
http://www.salesmanago.pl/api/funnel/count

Pola dostępne w zapytaniu metody count:

Pole Max. długość Opis
clientId* - id użytkownika
apiKey* - klucz do API
requestTime* - czas wykonania żądania (ms)
sha* - wygenerowany sha
owner* - mail użytkownika
funnel* - nazwa lejka
stage* - nazwa etapu

stage - parametr opcjonalny - gdy pusty, metoda zwraca ilosc kontaktów w całym lejku, gdy uzupełniony zwraca ilość w wybranym etapie

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "count": 123
}

success – informacja o poprawności zakończenia importu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Zarządzanie listą wysyłkową (Opt-in / Opt-out)

Wypisywanie kontaktu z listy (Opt-out)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "email" : "konrad-test-optout-1@konri.com"
}

Kontakt wypisujemy z listy wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/optout

Pola dostępne w zapytaniu metody optout:

Pole Max. długość Opis
email* 255 email kontaktu

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Zapisywanie kontaktu do listy (Opt-in)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "email" : "konrad-test-optout-1@konri.com"
}

Kontakt dodajemy na listę wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/optin

Pola dostępne w zapytaniu metody optin:

Pole Max. długość Opis
email* 255 email kontaktu

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Masowe wypisywanie kontaktu z listy (Opt-out)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "emails" : [
    "batchtest2@benhauer.pl", "batchtest1@benhauer.pl"
  ]
}

Kontakty masowo wypisujemy z listy wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/batchoptout

Pola dostępne w zapytaniu metody batchoptout:

Pole Max. długość Opis
emails* 255/email tablica adresów email kontaktów

Rezultat zapytania:

{
  "success":true, 
  "message":[], 
  "contactIds":{
    "batchtest2@benhauer.pl":"b257d328-2a95-41ce-915a-94b4274e6c29",
    "batchtest1@benhauer.pl":"bf4d6c03-1ca2-4b3f-8131-c28829236b02"
  }
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactIds – to unikatowe identyfikator uaktualnionych kontaktów
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Masowe zapisywanie kontaktu do listy (Opt-in)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "emails" : [
    "batchtest2@benhauer.pl", "batchtest1@benhauer.pl"
  ]
}

Kontakty masowo dopisujemy do listy wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/batchoptin

Pola dostępne w zapytaniu metody batchoptin:

Pole Max. długość Opis
emails* 255/email tablica adresów email kontaktów

Rezultat zapytania:

{
  "success":true, 
  "message":[], 
  "contactIds":{
    "batchtest2@benhauer.pl":"b257d328-2a95-41ce-915a-94b4274e6c29",
    "batchtest1@benhauer.pl":"bf4d6c03-1ca2-4b3f-8131-c28829236b02"
  }
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactIds – to unikatowe identyfikator uaktualnionych kontaktów
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Zapisywanie kontaktu do listy telefonicznej (Opt-in phone)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "email" : "konrad-test-optout-1@konri.com"
}

Kontakt dodajemy na listę wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/phoneoptin

Pola dostępne w zapytaniu metody phoneoptin:

Pole Max. długość Opis
email* 255 email kontaktu

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Wypisywanie kontaktu z listy telefonicznej (Opt-out phone)

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "email" : "konrad-test-optout-1@konri.com"
}

Kontakt wypisujemy z listy wysyłek wywołując metodę:
http://www.salesmanago.pl/api/contact/phoneoptout

Pola dostępne w zapytaniu metody phoneoptout:

Pole Max. długość Opis
email* 255 email kontaktu

Rezultat zapytania:

{ 
  "contactId" : "21c252a6-6de0-436b-bae8-9d0142363266",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
contactId – to unikatowy identyfikator uaktualnionego lub nowo dodanego kontaktu
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Zdarzenia zewnętrzne

W SALESmanago można rejestrować zdarzenia zewnętrzne dla kontaktu, nie koniecznie związane z jego aktywnością online. Przykładowo: zakup produktu w sklepie stacjonarnym, wizytę w lokalu itp.

Dodawanie zdarzenia zewnętrznego

Przykładowa struktura zapytania rejestrującego nowe zdarzenie:

{
    "clientId":"your-client-id-123",
    "apiKey":"your-api-key-123",
    "requestTime":1356180568127,
    "sha":"3e4ec39722326150aae60f41e038d1def4450f46",
    "owner":"admin@vendor.pl",
    "email":"konrad@benhauer.com",
    "contactEvent":{
        "date":1356180568153,
        "description":"Zakup z kartą \"Super Bonus\"",
        "products":"p01, p02",
        "location":"Krupnicza 3, Kraków",
        "value":1234.43,
        "contactExtEventType":"PURCHASE",
        "detail1":"C.ID: *** *** 234",
        "detail2":"Płatość kartą",
        "detail3":null,
        "externalId":"A-123123123"
    }
}

W celu dodania zdarzenia wykonujemy metodę:
http://www.salesmanago.pl/api/contact/addContactExtEvent

Pola dostępne w zapytaniu metody addContactExtEvent:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
email*/contactId* 255 adres e-mail kontaktu lub identyfikator kontaktu
date* timestamp data zdarzenia (timestamp, czyli czas jaki upłynął w milisekundach od północy 1 stycznia 1970 UTC),
description 2048 opis zdarzenia
products 512 opcjonalna lista produktów oddzielona przecinkami
location 255 opcjonalne miejsce zdarzenia np. adres sklepu, placówki
value (19 2) opcjonalna wartość zdarzenia np. wydana kwota (max 19 cyfr + 2 po przecinku)
contactExtEventType* 255 typ zdarzenie, dopuszczalne wartości: PURCHASE, CART, VISIT, PHONE_CALL, OTHER, RESERVATION, CANCELLED, ACTIVATION, MEETING, OFFER, DOWNLOAD, LOGIN, TRANSACTION
detail1-20 255/detal opcjonalne detale zdarzenia,
externalId 255 opcjonalne ID zdarzenia np. ID z systemu kasowego i.t.p.,

Rezultat zapytania:

{ 
  "eventId":"7284e317-3bb6-4505-afbe-55b9a101339a",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
eventId – ID dodanego zdarzenia
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Dodawanie wielu zdarzeń zewnętrznych na raz

Przykładowa struktura zapytania dodająca zdarzenia:

{
 "clientId": "your-client-id-123",
 "apiKey": "your-api-key-123",
 "sha": "09b42a100849de3e4f7fad4f445eb47e833dba87",
 "owner":"user@vendor.pl",
 "events": [
        {
            "contactId":"001e720f-b2ab-4203-a25f-b089557cf0da",
            "contactEvent":{
                "date":356180568153,
                "description":"Bought with \"Super Bonus\"",
                "products":"p01, p02",
                "location":"Wall St. 3, New York",
                "value":1234.43,
                "contactExtEventType":"PURCHASE",
                "detail1":"C.ID: *** *** 234",
                "detail2":"Paid with card",
                "detail3":null,
                "externalId":"B-99999999"
            }   
        },
        {
            "email":"best.user@best.pl",
            "contactEvent":{
                "date":356180568153,
                "description":"Bought with \"Super Bonus\"",
                "products":"p01, p02",
                "location":"Wall St. 3, New York",
                "value":1234.43,
                "contactExtEventType":"PURCHASE",
                "detail1":"C.ID: *** *** 234",
                "detail2":"Paid with card",
                "externalId":"A-123123123"
            }   
        },
        {
            "email":"best.user@best.pl",
            "contactEvent":{
                "date":356180568153,
                "description":"Bought with \"Super Bonus\"",
                "products":"p02, p03",
                "location":"Wall St. 3, New York",
                "value":1234.43,
                "contactExtEventType":"PURCHASE",
                "detail1":"C.ID: *** *** 234",
                "detail2":"Paid with card",
                "detail3":null,
                "externalId":"A-123123123"
            }   
        }
    ]
}

W celu dodania wielu zdarzeń wykonujemy metodę:
http://www.salesmanago.pl/api/contact/batchAddContactExtEvent

Pola dostępne w zapytaniu metody batchAddContactExtEvent:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
events* - lista zdarzeń zwnętrznych (nie może być pusta oraz większa od 1000)

Pojedynczy element listy zdarzeń zewnętrznych zawiera:

Pole Max. długość Opis
email* 255 email kontaktu dla którego dodawane jest zdarzenie
contactId 255 identyfikator kontaktu dla którego dodawane jest zdarzenie (może być używane zamiennie z adresem email)
contactEvent* - obiekt zdarzenia zewnętrznego ( czytaj więcej - Dodawanie zdarzeń )

Rezultat zapytania:

{
  "success": true,
  "message": [],
  "failedContacts": [],
  "createdAmount": 10,
  "failedAmount": 0
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
failedContacts – tablica kontaktów dla których dodanie zdarzenia nie powiodło się
createdAmount – liczba stworzonych zdarzeń
failedAmount – liczba zdarzeń których dodawanie zakończyło się błędem

Modyfikacja zdarzenia zewnętrznego

Przykładowa struktura zapytania modyfikująca zdarzenie:

{
    "clientId":"your-client-id-123",
    "apiKey":"your-api-key-123",
    "requestTime":1356180568127,
    "sha":"3e4ec39722326150aae60f41e038d1def4450f46",
    "owner":"admin@vendor.pl",
    "contactEvent":{
        "eventId":"7284e317-3bb6-4505-afbe-55b9a101339a",
        "date":1356180568153,
        "description":"Zakup z kartą \"Super Bonus\"",
        "products":"p01, p02",
        "location":"Krupnicza 3, Kraków",
        "value":1234.43,
        "contactExtEventType":"PURCHASE",
        "detail1":"C.ID: *** *** 234",
        "detail2":"Płatość kartą",
        "detail3":null,
        "externalId":"A-123123123"
    }
}

W celu zmodyfikowania zdarzenia wykonujemy metodę:
http://www.salesmanago.pl/api/contact/updateContactExtEvent

Pola dostępne w zapytaniu metody updateContactExtEvent:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
eventId* 255 ID zdarzenia (zwrócone przez metodę dodającą)
date* timestamp data zdarzenia (timestamp, czyli czas jaki upłynął w milisekundach od północy 1 stycznia 1970 UTC),
description 2048 opis zdarzenia
products 512 opcjonalna lista produktów oddzielona przecinkami
location 255 opcjonalne miejsce zdarzenia np. adres sklepu, placówki
value (19 2) opcjonalna wartość zdarzenia np. wydana kwota (max 19 cyfr + 2 po przecinku)
contactExtEventType* 255 typ zdarzenie, dopuszczalne wartości: PURCHASE, CART, VISIT, PHONE_CALL, OTHER, RESERVATION, CANCELLED, ACTIVATION, MEETING, OFFER, DOWNLOAD, LOGIN, TRANSACTION
detail1-20 255/detal opcjonalne detale zdarzenia,
externalId 255 opcjonalne ID zdarzenia np. ID z systemu kasowego i.t.p.,

Rezultat zapytania:

{ 
  "eventId":"7284e317-3bb6-4505-afbe-55b9a101339a",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
eventId – ID zmodyfikowanego zdarzenia
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Usuwanie zdarzenia

Przykładowa struktura zapytania usuwająca zdarzenie:

{
    "clientId":"your-client-id-123",
    "apiKey":"your-api-key-123",
    "requestTime":1356180568127,
    "sha":"3e4ec39722326150aae60f41e038d1def4450f46",
    "owner":"admin@vendor.pl",
    "eventId":"7284e317-3bb6-4505-afbe-55b9a101339a"
}

W celu usunięcia zdarzenia wykonujemy metodę:
http://www.salesmanago.pl/api/contact/deleteContactExtEvent

Pola dostępne w zapytaniu metody deleteContactExtEvent:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
eventId* 255 ID zdarzenia (zwrócone przez metodę dodającą)

Rezultat zapytania:

{
    "success":true,
    "message":[],
    "result":"deleted"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
result – rezultat zapytania
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Integracja zdarzeń zewnętrznych typu koszyk

Do przekazania tego typu danych używamy metod addContactExtEvent oraz updateContactExtEvents. Identyfikatory produktów dodawanych do koszyka należy przechowywać w polu products. Najbardziej optymalną metodą jest przekazanie całej zawartości koszyka przy pomocy jednego zapytania – produkty oddzielając przecinkami lub średnikami. Można również raz wykonać metodę addContactExtEvent zapisując zwrócony rezultat (eventId) – przy kolejnym dodaniu tylko aktualizować listę produktów (przy użyciu metody updateContactExtEvent oraz wspomnianego eventId).

Zapytanie addContactExtEvent można wykonywać na dwa sposoby:
  - przy użyciu adresu email,
  - przy użyciu contactId (wartości z ciasteczka smclient, którą można wyciągnąć np: przy użyciu javascript).

Tych dwóch sposobów nie można używać łącznie - nie można też dodawać zdarzeń zewnętrznych dla kontaktów niezidentyfikowanych.

Dodatkowo scenariusz, gdy niemonitorowany (brak smclient oraz maila) - dodaje produkty do koszyka:

Należy wtedy takie produkty trzymać po stronie sklepu (np. w sesji) - i od razu w momencie zidentyfikowania kontaktu przekazać produkty do salesmanago z użyciem metody addContactExtEvent.

Monitorowanie zdarzeń AJAX/JavaScript

SALESmanago pozwala obok samych wizyt rejestrować zdarzenia JavaScript – np. otwarcia tzw. zakładek czy pobrani plików.
Aby zarejestrować zdarzenie zewnętrzne należy w skrypcie JavaScript na naszej stronie wywołać metodę SALESmanago:

smEvent(eventName)

gdzie:

eventName to nazwa zdarzenia np. „detale-lokata”, „detale-kredyt”.

należy takie zdarzenie podpiąć pod konkretne elementy, które chce się monitorować, np.:

<a href="download.pdf" onclick="smEvent('PDF-download');return true;">download</a>

API - Zarządzanie tagami

Import listy tagów

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "showSystemTags" : true,
  "owner" : "admin@vendor.pl",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7"
}

Tagi importujemy wywołując metodę:
http://www.salesmanago.pl/api/contact/tags

Pola dostępne w zapytaniu metody tags:

Pole Max. długość Opis
owner* 255 właściciel kontaktu (email konta użytkownika SALESmanago)
showSystemTags* true/false przy ustawieniach na true SALESmanago zwróci również tagi systemowe

Rezultat zapytania

{ 
  "tags" : [ { "tag" : "ADmanago",
              "numberOfTagged" : 12
       } ],
  "message" : [  ],
  "success" : true
}

W rezultacie zapytania otrzymujemy:

tags – importowane tagi
  tag – nazwa tagu
  numberOfTagged – ilość otagowanych kontaktów
success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Wiadomości email

Wysyłanie wiadomości email (przestarzała)

Przykładowa struktura danych zapytania:

{
    "clientId": "o7gslwlc8o1e2ry1",
    "apiKey": "-8773203084919279780-2743038323156910252",
    "requestTime": 1391167514795,
    "sha": "184db1df6ec4893a1f50809bf8d1a4fe88cde4dc",
    "user": "admin@finplan.pl",
    "emailId": "029c504e-193a-43f2-84c7-3b7ee3c4438c",
    "html" : "<html><body>email-html-content</body></html>",
    "contacts": [
        {
        "addresseeType" : "EMAIL",
            "email": "user1@example.com",
            "contactId": null,
            "properties": [
                {
                    "name": "ext_detal_01",
                    "value": "value_01"
                },
                {
                    "name": "ext_detal_02",
                    "value": "value_02"
                }
            ],
        "tag" : null
        },
        {
        "addresseeType" : "EMAIL",
            "email": "user2@example.com",
            "contactId": null,
            "properties": [
                {
                    "name": "ext_detal_03",
                    "value": "value_03"
                },
                {
                    "name": "ext_detal_04",
                    "value": "value_04"
                }
            ],
        "tag" : null
        }
        ],
    "excludeContacts": [
        {
        "addresseeType" : "EMAIL",
            "email": "user3@example.com",
            "contactId": null,
        "tag" : null
        }
    ],
    "date": 1391167515515,
    "subject": "Sample API subject",
    "campaign": "monitor_me_in_ga",
    "immediate" : false,
    "rule" : false
}

W celu wysłania maila poprzez API należy skorzystać z metody:
http://www.salesmanago.pl/api/email/send

Pola dostępne w zapytaniu metody send:

Pole Max. długość Opis
emailId* 255 identyfikator wiadomości z systemu SALESmanago
date* 255 data wysyłki
subject* 2048 temat wysyłki (jeżeli nie podany – zostanie użyty domyślny)
campaign* 255 kampania dla śledzenia Google UTM (jeżeli nie podana – zostanie użyta domyślna)
html* - zawartość maila w formacie html
contacts* - tablica kontaktów do których wysłać email
addresseeType 255 typ adresowania ( EMAIL, CONTACT_ID, TAGS)
email/contactId/tag 255 opcjonalnie – adres e-mail kontaktu, jego identyfikator lub tag
properties 255 definiowane przez użytkownika atrybuty dodatkowe wiadomości e-mail. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone. W wiadomości e-mail należy użyć konstrukcji $cst.nazwaParametru$ w celu podstawienia odpowiedniej wartości
excludeContacts - tablica kontaktów do których nie wysłać email
addresseeType 255 typ adresowania ( EMAIL, CONTACT_ID, TAGS)
email/contactId/tag 255 opcjonalnie – adres e-mail kontaktu, jego identyfikator lub tag
immediate true/false przypisanie wartości true spowoduje natychmiastowe wysłanie wiadomości e-mail
rule true/false przypisanie wartości true spowoduje oznaczenie wiadomości jako e-mail z reguły

Rezultat zapytania

{
    "success": true,
    "message": ["Emails are scheduled to send."]
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

Wysyłanie wiadomości email (zalecana)

Przykładowa struktura danych zapytania:

{
  "clientId": "ye4vodnswfo6zp75",
  "apiKey": "qwertgfdsa1234",
  "requestTime": 1496399754907,
  "sha": "02d89ab2f7333f11745f30e100a7fbd5adec2097",
  "user": "admin@vendor.pl",
  "emailId": "emailid",
  "date": 1234562541250,
  "html": "<html> <body> text </body> </html>",
  "campaign": "nazwa kampani",
  "subject": "temat mojej wiaodmości",
  "contacts": [
    {
      "addresseeType": "EMAIL",
      "value": "test1@test.pl, test2@test.pl, test3@test.pl",
      "properties": [
        {
          "name": "name",
          "value": "value"
        },
        {
          "name": "name",
          "value": "value"
        }
      ]
    },
    {
      "addresseeType": "CONTACT_ID",
      "value": "contact-id-1, contact-id-2, contact-id-3, contact-id-3"
    },
    {
      "addresseeType": "TAG",
      "value": "tag1, tag2",
      "properties": [
        {
          "name": "name",
          "value": "value"
        },
        {
          "name": "name",
          "value": "value"
        }
      ]
    },
    {
      "addresseeType": "FUNNEL",
      "value": "funnel-name-1, funnel-nam-2",
      "properties": [
        {
          "name": "name",
          "value": "value"
        },
        {
          "name": "name",
          "value": "value"
        }
      ]
    },
    {
      "addresseeType": "STAGE",
      "value": "funnel-name",
      "optValue": "stage-name-1, stage-name-2"
    }
  ],
  "excludeContacts": [
    {
      "addresseeType": "EMAIL",
      "value": "test5@test.pl, test6@test.pl, test8@test.pl"
    },
    {
      "addresseeType": "TAG",
      "value": "exclude-tag-1"
    }
  ]
}

W celu wysłania maila poprzez API należy skorzystać z nowej metody:
http://www.salesmanago.pl/api/email/sendEmail

Pola dostępne w zapytaniu metody sendEmail:

Pole Max. długość Opis
user* 255 adres email użytkownika Salesmanago
emailId* 255 identyfikator wiadomości z systemu SALESmanago
date* 255 data wysyłki
html* - zawartość maila w formacie html
campaign 255 kampania dla śledzenia Google UTM (jeżeli nie podana – zostanie użyta domyślna)
subject* 2048 temat wysyłki (jeżeli nie podany – zostanie użyty domyślny)
contacts* - tablica kontaktów do których wysłać email
addresseeType* 255 typ adresowania ( EMAIL, CONTACT_ID, TAG, FUNNEL, STAGE)
value * 255 opcjonalnie – adres e-mail kontaktu, jego identyfikator, tag lub lejek
optValue 255 opcjonalnie dla typu STAGE podajemy po przecinku nazwy etapów w podanym wyżej lejku do których adresujemy wysyłke
properties 255 definiowane przez użytkownika atrybuty dodatkowe wiadomości e-mail. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone. W wiadomości e-mail należy użyć konstrukcji $cst.nazwaParametru$ w celu podstawienia odpowiedniej wartości
excludeContacts - tablica kontaktów do których mail nie zostanie wysłany

Rezultat zapytania

{
  "success": true,
  "message": [
    "Emails are scheduling to send."
  ],
  "conversationId": "conversation-id"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
conversationId - identyfikator mailingu

Wysyłanie wiadomości email z załącznikiem

Przykładowa struktura danych zapytania:

    POST /api/email/sendWithAttachment HTTP/1.1
    HOST: dev.salesmanago.pl
    content-type: multipart/form-data; boundary=----WebKitFormBoundary1aTYxdL1yD9GkrBw
    accept: application/json, application/*+json
    cookie: JSESSIONID=B79601649C8C221E3024EF909FD27A51; SERVERID=A
    content-length: 81854

    ------WebKitFormBoundary1aTYxdL1yD9GkrBw
    Content-Disposition: form-data; name="attachment"; filename="poster.gif"
    Content-Type: image/gif

    <-- zawartość pliku -->

    ------WebKitFormBoundary1aTYxdL1yD9GkrBw
    Content-Disposition: form-data; name="emailSendRequest"

    {
      "clientId": "r60ta7pkk1cqh1iy",
      "apiKey": "sdfsfsfsdf",
      "requestTime": 1391167514795,
      "sha": "229c9b4e06d6742330d7fe7c6882469bcac90686",
      "user": "test@test.com",
      "emailId": "1ece2b0d-9061-4295-9ad4-34ab82fa852e",
      "contacts": [
        {
          "email": "test@test.com",
          "contactId": null,
          "properties": [
            { "name": "ext_detal_01", "value": "value_01" }
          ,
            { "name": "ext_detal_02", "value": "value_02" }
          ]
        },
        {
          "email": "test.stepniak+1@gmail.com",
          "contactId": null,
          "properties": [
            { "name": "ext_detal_03", "value": "value_03" }
          ,
            { "name": "ext_detal_04", "value": "value_04" }
          ]
        }
      ],
      "date": 1391167515515,
      "subject": "Sample API subject",
      "campaign": "monitor_me_in_ga"
    }
    ------WebKitFormBoundary1aTYxdL1yD9GkrBw--
}

W celu wysłania maila z załącznikiem poprzez API należy skorzystać z metody:
http://www.salesmanago.pl/api/email/sendWithAttachment

Pola dostępne w zapytaniu metody sendWithAttachment:

Pole Max. długość Opis
emailSendRequest* - informacje dotyczące maila
emailId* 255 identyfikator wiadomości z systemu SALESmanago
date* 255 data wysyłki
subject* 2048 temat wysyłki (jeżeli nie podany – zostanie użyty domyślny)
campaign* 255 kampania dla śledzenia Google UTM (jeżeli nie podana – zostanie użyta domyślna)
html* - zawartość maila w formacie html
contacts* - tablica kontaktów do których wysłać email
addresseeType 255 typ adresowania ( EMAIL, CONTACT_ID, TAGS)
email/contactId/tags 255 opcjonalnie – adres e-mail kontaktu, jego identyfikator lub tag
properties 255 definiowane przez użytkownika atrybuty dodatkowe wiadomości e-mail. Zaleca się nie stosować polskich znaków oraz spacji w nazwie, ale jest to dozwolone. W wiadomości e-mail należy użyć konstrukcji $cst.nazwaParametru$ w celu podstawienia odpowiedniej wartości
excludeContacts - tablica kontaktów do których nie wysłać email
addresseeType 255 typ adresowania ( EMAIL, CONTACT_ID, TAGS)
email/contactId/tags 255 opcjonalnie – adres e-mail kontaktu, jego identyfikator lub tag
immediate true/false przypisanie wartości true spowoduje natychmiastowe wysłanie wiadomości e-mail
rule true/false przypisanie wartości true spowoduje oznaczenie wiadomości jako e-mail z reguły
attachment* - załączony plik

Rezultat zapytania

{
    "success": true,
    "message": ["Emails are scheduled to send."],
    "conversationId":"6bd61df3-44f3-825c-8c18-3d7813fea03b"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
conversationId – identyfikator mailingu

Dodawanie wiadomości email

Przykładowa struktura danych zapytania:

{
  "clientId": "h4jsu6pc5txybj04",
  "apiKey": "qwetreryuii",
  "requestTime": 1481543324302,
  "sha": "abcd509ac6eb0c460455c74ccc66867955a5333d",
  "user": "admin@vendor.pl",
  "name": "Email name",
  "campaign": "Campaign name",
  "subject": "Email subject",
  "contentBoxMap": {
    "customField": "fieldValue"
  },
  "shared": true,
  "dynamic": true,
  "emailAccountId": "1d35aaaa-8dac-423f-8325-f767816fb096",
  "templateId": "e88a18f9-3dfe-4cf8-937e-960c3d217c97"
}

W celu dodania wiadomości email należy skorzystać z metody:
http://www.salesmanago.pl/api/email/addEmail

Pola dostępne w zapytaniu metody addEmail:

Pole Max. długość Opis
user* 255 email użytkownika
name* 255 nazwa szablonu
campaign 255 nazwa kampanii
subject* 2048 temat wiadomości email
contentBoxMap 255/box mapa zawierająca nazwy i wartości specjalnych pól
shared true/false wartość logiczna określająca czy dany szablon jest współdzielony
dynamic true/false wartość logiczna określająca czy dany szablon jest dynamiczny
emailAccountId* 255 identyfikator konta wysyłkowego
templateId* 255 identyfikator szablonu email

Rezultat zapytania

{
  "success": true,
  "message": [],
  "emailId": "cf55c3d5-9e1c-4f87-be2d-450bef5e3dd4"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
emailId - identyfikator stworzonej wiadomości email

Dodawanie lub modyfikowanie wiadomości email

Przykładowa struktura danych zapytania:

{
  "clientId": "h4jsu6pc5txybj04",
  "apiKey": "qwetreryuii",
  "requestTime": 1481543324302,
  "sha": "abcd509ac6eb0c460455c74ccc66867955a5333d",
  "user": "admin@vendor.pl",
  "name": "Email name",
  "campaign": "Campaign name",
  "subject": "Email subject",
  "contentBoxMap": {
    "customField": "fieldValue"
  },
  "shared": true,
  "dynamic": true,
  "emailAccountId": "1d35aaaa-8dac-423f-8325-f767816fb096",
  "templateId": "e88a18f9-3dfe-4cf8-937e-960c3d217c97"
}

W celu dodania lub modyfikacji wiadomości email należy skorzystać z metody:
http://www.salesmanago.pl/api/email/upsertByName

Pola dostępne w zapytaniu metody upsertByName:

Pole Max. długość Opis
user* 255 email użytkownika
name* 255 nazwa szablonu
campaign 255 nazwa kampanii
subject* 2048 temat wiadomości email
contentBoxMap* 255/box mapa zawierająca nazwy i wartości specjalnych pól
shared true/false wartość logiczna określająca czy dany szablon jest współdzielony
dynamic true/false wartość logiczna określająca czy dany szablon jest dynamiczny
emailAccountId* 255 identyfikator konta wysyłkowego
templateId* 255 identyfikator szablonu email

Rezultat zapytania

{
  "success": true,
  "message": [],
  "emailId": "cf55c3d5-9e1c-4f87-be2d-450bef5e3dd4"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
templateId - identyfikator stworzonej/zmodyfikowanej wiadomości email

Dodawanie szablonów email

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id-123",
  "apiKey": "api-key-123",
  "requestTime": 1481536595205,
  "sha": "a533abcd509ac6ebccc660c460455c748679553d",
  "user": "admin@vendor.pl",
  "name": "Email Template name",
  "emailContent": "html email content",
  "shared": true,
  "dynamic": true,
  "parametrized": true,
  "fromUrl": true,
  "titleUrl": true,
  "urlTemplate": "www.example.pl/template.html",
  "customFields": "customField"
}

W celu dodania szablonu email należy skorzystać z metody:
http://www.salesmanago.pl/api/email/addTemplate

Pola dostępne w zapytaniu metody addTemplate:

Pole Max. długość Opis
user* 255 email użytkownika
name* 255 nazwa szablonu
emailContent* - zawartość html wiadomości email
shared true/false wartość logiczna określająca czy dany szablon jest współdzielony
dynamic true/false wartość logiczna określająca czy dany szablon jest dynamiczny
parametrized true/false wartość logiczna określająca czy dany szablon akceptuje parametry przed wysłaniem
fromUrl true/false wartość logiczna określająca czy dany szablon ma używać szablonu z linku html
titleUrl true/false wartość logiczna określająca czy dany szablon ma używać tytułu maila z linku
urlTemplate 255 url szablonu html
customFields 255 dodatkowe pola w szablonie

Rezultat zapytania

{
  "success": true,
  "message": [],
  "templateId": "f69b9e97-dd34-468c-add2-e8efc09e7bb7"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
templateId - identyfikator stworzonego szablonu

Dodawanie lub modyfikacja szablonów email

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id-123",
  "apiKey": "api-key-123",
  "requestTime": 1481536595205,
  "sha": "a533abcd509ac6ebccc660c460455c748679553d",
  "user": "admin@vendor.pl",
  "name": "Email Template name",
  "emailContent": "html email content",
  "shared": true,
  "dynamic": true,
  "parametrized": true,
  "fromUrl": true,
  "titleUrl": true,
  "urlTemplate": "www.example.pl/template.html",
  "customFields": "customField"
}

W celu dodania lub modyfikacji szablonu email należy skorzystać z metody:
http://www.salesmanago.pl/api/email/upsertTemplate

Pola dostępne w zapytaniu metody upsertTemplate:

Pole Max. długość Opis
user* 255 email użytkownika
name* 255 nazwa szablonu
emailContent* - zawartość html wiadomości email
shared true/false wartość logiczna określająca czy dany szablon jest współdzielony
dynamic true/false wartość logiczna określająca czy dany szablon jest dynamiczny
parametrized true/false wartość logiczna określająca czy dany szablon akceptuje parametry przed wysłaniem
fromUrl true/false wartość logiczna określająca czy dany szablon ma używać szablonu z linku html
titleUrl true/false wartość logiczna określająca czy dany szablon ma używać tytułu maila z linku
urlTemplate 255 url szablonu html
customFields 255 dodatkowe pola w szablonie

Rezultat zapytania

{
  "success": true,
  "message": [],
  "templateId": "f69b9e97-dd34-468c-add2-e8efc09e7bb7"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
templateId - identyfikator stworzonego szablonu

Pobieranie masowych konwersacji email

Przykładowa struktura danych zapytania:

{
  "clientId":"h4jsu6pc5txybj04",
  "apiKey":"your-api-key-123",
  "requestTime":1485520055,
  "sha":"11fbaf0ad77f1491979594f58ba10565b30926",
  "from":1491965421341,
  "to":1491979590565
}

W celu pobrania statystyk konwersacji należy skorzystać z metody:
http://www.salesmanago.pl/api/email/massConversationList

Pola dostępne w zapytaniu metody massConversationList:

Pole Max. długość Opis
from* Timestamp początek zakresu dat stworzenia konwersacji email
to* Timestamp koniec zakresu dat stworzenia konwersacji email

Rezultat zapytania

{
  "success": true,
  "message": [],
  "conversationList": [
    "86dfe8bd-f21d-4f5e-9f53-19c929877d3c",
    "5c27d476-282d-4235-9393-300d359b2d51"
  ]
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
conversationList - lista identyfikatorów masowych konwersacji email

Pobieranie statystyk konwersacji

Przykładowa struktura danych zapytania:

{
  "clientId": "client-id-123",
  "apiKey": "api-key-123",
  "requestTime": 1481545641901,
  "sha": "abcd50460455c79ac6eb0c4ccc66867955a5333d",
  "conversationId": "dc4ef436-3d1b-4a85-b061-77236b1766e1"
}

W celu pobrania statystyk konwersacji należy skorzystać z metody:
http://www.salesmanago.pl/api/email/conversationStatistics

Pola dostępne w zapytaniu metody conversationStatistics:

Pole Max. długość Opis
conversationId* 255 identyfikator konwersacji

Rezultat zapytania

{
  "success": true,
  "message": [],
  "conversationId": "5f23113a-1776-4e0c-8b21-596e74345c2a",
  "sentMessage": 1,
  "openMessage": 2,
  "uniqueOpen": 1,
  "clickedMessage": 1,
  "uniqueClicks": 1,
  "errorMessage": 3,
  "listedMessage": 6,
  "softBounce": 4,
  "hardBounce": 5,
  "openedBy": [
    {
      "email": "opened1@salesmanago.pl",
      "dateOpened": 1490276208000,
      "dateClicked": 1490276208000
    },
    {
      "email": "opened2@salesmanago.pl",
      "dateOpened": 1485178608000,
      "dateClicked": null
    }
  ],
  "clickedBy": [
      {
        "email": "sadmin@salesmanago.pl",
        "dateOpened": 1490276208000,
        "dateClicked": 1490276208000
      }
  ],
  "softBouncedBy": [
    "soft1@salesmanago.com",
    "soft2@salesmanago.com",
    "soft3@salesmanago.com",
  ],
  "hardBouncedBy": [
    "soft4@salesmanago.com",
  ]
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd
conversationId - identyfikator mailingu
sentMessage - wysłane wiadomości w ramach mailingu
openMessage - otwarte wiadomości
uniqueOpen - unikalne otwarcia
clickedMessage - kliknięte wiadomości
errorMessage - błędne wiadomości
listedMessage - liczba kontaktów wypisanych z mailingu
softBounce - miękkie zwrotki
hardBounce - twarde zwrotki
openedBy - lista kontaktów, które otworzyły wiadomość e-mail
  email - adres e-mail kontaktu,
  dateOpened - data otwarcia ( Timestamp )
  dateClicked - data kliknięcia ( Timestamp )
clickedBy - lista kontaktów, które kliknęły wiadomość e-mail
  email - adres e-mail kontaktu,
  dateOpened - data otwarcia ( Timestamp )
  dateClicked - data kliknięcia ( Timestamp )
softBouncedBy - lista adresów email kontaktów, które są oznaczone jako miękka zwrotka
hardBouncedBy - lista adresów email kontaktów, które są oznaczone jako twarda zwrotka

Wysyłanie potwierdzenia subskrypcji

Przykładowa struktura danych zapytania:

{
    "clientId":"vgqgnhyxnk46va7s",
    "apiKey":"api_key_code",
    "requestTime":1488803352992,
    "sha":"0fd94b6bcf9d97dc79df6951575ebdeaf4617c96",
    "emai":"test@test.com",
    "owner":"test@owner.pl",
    "tag":"Tag",
    "lang":"PL",
    "apiDoubleOptInEmailTemplateId":"",
    "apiDoubleOptInEmailAccountId":"",
    "apiDoubleOptInEmailSubject":""
}

W celu wysłania maila potwierdzającego subskrypcję poprzez API należy skorzystać z metody:
http://www.salesmanago.pl/api/email/sendConfirmation

Metoda sendConfirmation ma celu wysłanie wiadomości potwierdzającej subskrypcję (znane w systemie jako doubleOptIn) dla podanego w zapytaniu kontaktu (email). Wiadomość zostanie wysłana do kontaktów które istnieją oraz nie posiadają już statusu OptIn. Opcjonalnym krytetrium jest dodanie tagu (pole “tag”), który musi posiadać kontakt by zostało wysłane potwierdzenie.

Pola dostępne w zapytaniu metody sendConfirmation:

Pole Max. długość Opis
email* 255 email kontaktu
owner* 255 email właściciela kontaktu
tag 255 opcjonalny parametr definiujący tag który musi posiadać kontakt by został do nieg wysłany e-mail potwierdzający
lang 255 język wysyłanej wiadomości email
apiDoubleOptInEmailTemplateId 255 opcjonalny identyfikator szablonu dla double-opt-in,
apiDoubleOptInEmailAccountId 255 opcjonalny identyfikator konta e-mail dla double-opt-in,
apiDoubleOptInEmailSubject 255 opcjonalny temat wiadomości dla double-opt-in

Rezultat zapytania

{
    "success":true,  
    "message":["Contact exists - confirmation email sent"],  
    "contactExists":true,  
    "contactId":"4850e968-45fa-4910-bf8c-0d2cfdbaa42b"
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd/rezultat zapytania
contactExists – wartość logiczna informująca czy dany kontakt istnieje w bazie
contactId – identyfikator kontaktu

API - Wiadomości SMS

Wysyłanie wiadomości SMS

Przykładowa struktura danych zapytania:

{
  "clientId": "xxyyzz",
  "apiKey": "yourApiKey",
  "sha": "4288423ba34736e50f852228ea1d0c79628d3e16",
  "user": "user@vendor.pl",
  "contacts": [
    {
      "email": "contact@gmail.com"
    },
    {
      "contactId": "c4c52fea-47b1-1b1e-8680-40a230eb49bc"
    }
  ],
  "text": "Hello world!",
  "date": 1491571000
}

W celu wysłania wiadomości sms poprzez API należy skorzystać z metody:
http://www.salesmanago.pl/api/sms/send

Pola dostępne w zapytaniu metody send:

Pole Max. długość Opis
user* 255 mail użytkownika
date - aktualny znacznik czasu (ms)
text* - treść wiadomości
templateIntId* 255 id szablonu wiadomości sms, który będzie użyty jako treść wysyłanego SMS (alternatywa dla pola “text”)
contacts* - lista obiektów kontaktów
tags* - lista tagów kontaktu (alternatywa dla pola “contacts”)

Lista obiektów kontaktów (pole “contacts”) to tablica obiektów, które mogą zawierać zamiennie pola:

Pole Max. długość Opis
email* 255 e-mail kontaktu
contactId - id kontaktu z systemu SalesMANAGO (można go używać alternatywnie zamiast pola “email”)

Lista tagów (pole “tags”) użyta jako alternatywa dla pola “contacts” może zawierać tagi z systemu, do których przypisane są kontakty.

Rezultat zapytania

{
    "success": true,
    "message": [
        "API Smses are scheduled to send."
    ]
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Zadania

Zadania kontaktów

Przykładowa struktura danych zapytania:

{ 
  "apiKey" : "your-api-key-123",
  "clientId" : "your-client-id-123",
  "requestTime" : 1329128188409,
  "sha" : "02bfe70541d3907cf487f26dc2665b184b1221a7",
  "finished" : false,
  "smContactTaskReq" : { 
      "contactEmail" : "konrad-123@konri.com",
      "id" : "task-id-123",
      "note" : "Zadzwonić do klienta",
      "date" : 1359673200361,
      "cc" : "konrad-test-123@konri.com",
      "reminder" : "_30_MIN"
    }
}

Dodawania, aktualizację oraz usuwanie zadania kontaktu wykonujemy za pomocą jednej metody:
http://www.salesmanago.pl/api/contact/updateTask

Pola dostępne w zapytaniu metody updateTask:

Pole Max. długość Opis
finished* true/false przypisanie wartości true spowoduje skasowanie zadania i wtedy wymagany jest jedynie dodatkowy parametr id. Przy dodawaniu i aktualizacji zadania należy przypisać wartość false
contactEmail* 255 e-mail kontaktu do którego zostanie przypisane zadanie
id* 255 id zadania
note 2048 notatka zadania
date* 255 data wykonania zadania
cc 255 lista emaili do których zostanie wysłane przypomnienie (emaile powinny być oddzielone przecinkami)
reminder* 255 przypomnienie o wykonaniu zadania. Określa kiedy przypomnienia ma zostać wysłane*. Dopuszczalne wartości: 15_MIN – 15 minut przed, 30_MIN – 30 minut przed, 1_HOUR – godzinę przed, 12_HOUR – 12 godzin przed, 1_DAY – 1 dzień przed, 1_WEEK – 1 tydzień przed,

Rezultat zapytania

{ 
  "taskId" : "task-Id-123",
  "message" : [  ],
  "success" : true
}

W rezultacie zapytania otrzymujemy:

taskId – id zadania którego dotyczy akcja
success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd

API - Notatki

Dodawanie Notatek

Przykładowa struktura danych zapytania:

{
  "owner": "owner@test.pl",
  "contactId": "",
  "email": "test1@test.pl",
  "priv": false,
  "note": "Notatka ktora bedzie dodana do kontaktu"
}


Dodawanie notatek do kontaktu wykonujemy za pomocą metody:
http://www.salesmanago.pl/api/contact/addNote

Pola dostępne w zapytaniu metody addNote:

Pole Max. długość Opis
owner* 255 konto właściciela kontaktu do którego dodawana jest notatka
email* 255 email kontaktu do którego dodajemy notatke (opcjonalnie z contactId)
contactId* 255 id kontaktu dom którego dodajemy notatne (opcjonalnie z email)
priv true/false definiuje czy notatka ma być prywatna czyli widoczna tylko przez dodającego
note* 1024 notatka która będzie zapisana max 1024 znaki

Rezultat zapytania

{
  "success": true,
  "message": [
    "Note was added to contact"
  ]
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane)
message – tablica dodatkowych informacji

API - Inne

Autoryzacja tymczasowa

Przykładowa struktura danych zapytania:

{ 
  "userName" : "admin@vendor.pl",
  "password" : "****"
}

System SALESmanago umożliwia uzyskanie tymczasowego tokenu wykorzystując nazwę użytkownika i hasło. W tym celu należy wykonać metodę:
http://www.salesmanago.pl/api/contact/authorise

Pola dostępne w zapytaniu metody authorise:

Pole Max. długość Opis
userName* 255 nazwa użytkownika
password* 255 hasło

Rezultat zapytania

{ 
  "token" : "b426c6663d844305b2539e9bc27b75dc",
  "clientId" : "your-client-id-123",
  "message" : [  ],
  "success" : true 
}

W rezultacie zapytania otrzymujemy:

success – wartość logiczna informująca o rezultacie zapytania (udane / nie udane),
token – to tymczasowy token, który można użyć w celu autoryzacji w zamian za apiSecret,
clientId – identyfikator klienta, wymagany do kolejnych operacji,
message – tablica dodatkowych informacji pozwalająca zidentyfikować błąd,