Introduction
Setting up your Salesmachine takes only a few minutes. Use our libraries to collect customer data from your website, mobile applications, servers and send it to your Salesmachine.
Contact: A contact is a customer that is logged in on your product.
Account: An account is a group of contacts generally represented by a same company/project.
Event: An event is an action a contact performed in your application. Examples: created a new project, invited friends, upgraded to pro, etc.. You can define any event that is specific to your application.
Pageview: A pageview is when a contact loaded a page on your application.
Alias: Link and merge two contacts.
Install
Add salesmachine-ruby to you gem file:
gem 'salesmachine-ruby', '~> 1.0.0'
Initialize client:
require 'salesmachine'
require 'cgi'
$smclient = Salesmachine::Api.new :api_key => YOUR_API_TOKEN
Using pip:
pip install salesmachine-python
Initialize client:
from salesmachine.client import Client
smclient = Client(YOUR_API_TOKEN, YOUR_API_SECRET)
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
'https://api.salesmachine.io/v1/ping'
<?
Salesmachine::init(YOUR_API_TOKEN, YOUR_API_SECRET);
?>
To install Salesmachine, just paste this snippet into the header of your site:
Full version
var salesmachine = salesmachine || [];
salesmachine.Settings = function(apiToken, options) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = ("https:" === document.location.protocol ? "https:" : "http:") + "//my.salesmachine.io/javascripts/salesmachine.min.js";
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script, firstScript);
var methodFactory = function (type) {
return function () {
salesmachine.push([type].concat(Array.prototype.slice.call(arguments, 0)));
};
};
var methods = ['init', 'salesmachine', 'pageview', 'account', 'contact', 'track'];
for (var i = 0; i < methods.length; i++) {
salesmachine[methods[i]] = methodFactory(methods[i]);
}
salesmachine.init(apiToken, options);
};
salesmachine.Settings("YOUR_API_TOKEN", {});
Minified version
var salesmachine=salesmachine||[];salesmachine.Settings=function(e,a){var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src="//my.salesmachine.io/javascripts/salesmachine.min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(n,t);for(var s=function(e){return function(){salesmachine.push([e].concat(Array.prototype.slice.call(arguments,0)))}},c=["init","salesmachine","pageview","account","contact","track"],i=0;i<c.length;i++)salesmachine[c[i]]=s(c[i]);salesmachine.init(e,a)};
salesmachine.Settings("YOUR_API_TOKEN", {});
Make sure to replace
YOUR_API_TOKENandYOUR_API_SECRETwith your API key.
Authentication is done over HTTPS using Basic Auth with your API credentials. Your Application code will be your application token and your API token will be the password.
Contact
Contact object is the main entity to collect users data.
$smclient.contact :contact_uid => "123456", :params => {
email => "elon@teslamotors.com",
name => "Elon Musk",
gender => "male",
mrr => 99,
account_uid => "78910"
}
smclient.set_contact("123456", {
"email": "elon@teslamotors.com",
"name": "Elon Musk",
"gender": "male",
"mrr": 99,
"account_uid": "78910"
})
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
-d '{"contact_uid":"123456", "params" : { "email":"elon@teslamotors.com", "name":"Elon Musk", "gender":"male", "mrr": 99, "account_uid":"78910" }}' \
'https://api.salesmachine.io/v1/contact'
salesmachine.contact("123456", {
email: "elon@teslamotors.com",
name: "Elon Musk",
gender: "male",
mrr: 99,
account_uid: "78910"
});
<?php
Salesmachine::set_contact("123456", array(
'email' => 'elon@teslamotors.com',
'name' => 'Elon Musk',
'gender' => 'male',
'mrr' => 99,
'account_uid' => '78910'
));
?>
Required parameters
| Value | Type | Description |
|---|---|---|
| contact_uid | string | Unique identifier referring to a contact, it must match a unique ID in your application like database ID or email address. |
Recommanded fields
| Value | Type | Description |
|---|---|---|
| string | Contact email. | |
| name | string | Contact full name. |
| account_uid | string | Account id is a link to an account. |
Optional parameters
You can send any parameter, this table is just an example.
| Value | Type | Description |
|---|---|---|
| title | string | Mr, Ms, … |
| registered_at | timestamp | Time at which the user registered. |
| position | string | CEO, VP Sales, … |
Revenue field
Send recurring revenue data to Salesmachine to monitor your revenue health. Monthly Recurring Revenue (MRR) is the standard value you must send to Salesmachine. It should be sent as a parameter called mrr. More details
| Value | Type | Description |
|---|---|---|
| mrr | number | Monthly Recurring Revenue |
Account
Account object is the main entity to collect account data. An account is a collection of contacts and a contact can belong to several accounts.
$smclient.account :account_uid => "78910", :params => {
name: "Tesla Motors",
employee_count: 10,
website_url: "http://www.teslamotors.com",
mrr: 999,
}
salesmachine.set_account("78910", {
"name": "Tesla Motors",
"employee_count": 10,
"website_url": "http://www.teslamotors.com",
"mrr": 999,
})
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
-d '{"account_uid":"78910", "params" : {"name":"Tesla Motors", "employee_count":12000,"mrr":999}}' \
'https://api.salesmachine.io/v1/account'
salesmachine.account("78910", {
name: "Tesla Motors",
employee_count: 12000,
website_url: "http://www.teslamotors.com",
mrr: 999,
});
<?php
Salesmachine::set_account("78910", array(
'name' => 'Tesla Motors',
'employee_count' => 12000,
'website_url': 'http://www.teslamotors.com',
'mrr'=> 12000
));
?>
Required parameters
| Value | Type | Description |
|---|---|---|
| account_uid | string | Unique identifier referring to an account, it must match a unique ID in your application like database ID. |
Recommanded fields
| Value | Type | Description |
|---|---|---|
| name | string | Account name. |
Optional parameters
You can send any parameter, this table is just an example.
| Value | Type | Description |
|---|---|---|
| employee_count | number | Number of employees |
| website_url | String | Url of the account, if any. We will use it to display account logo in Salesmachine. |
Revenue field
Send recurring revenue data to Salesmachine to monitor your revenue health. Monthly Recurring Revenue (MRR) is the standard value you must send to Salesmachine. It should be sent as a parameter called mrr. More details
| Value | Type | Description |
|---|---|---|
| mrr | number | Monthly Recurring Revenue |
Event
Events are called when recording a specific action in the application. Events are specific to contacts defined by their unique_id.
$smclient.track(
:contact_uid => "123456", :event => "user_registration",
:params => {
account_uid: "78910",
display_name: "Registration"
}
)
smclient.track_event("123456", "user_registration", {
"account_uid" : "78910",
"display_name" : "Registration"
})
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
-d '{"contact_uid":"123456", "event_uid" : "user_registration", "params" : {"account_uid" : "78910", "display_name" : "Registration"}}' \
'https://api.salesmachine.io/v1/track/event'
salesmachine.track("123456", "user_registration", {
account_uid : "78910",
display_name : "Registration"
});
<?php
Salesmachine::track_event(
"123456",
"user_registration",
array(
'account_uid' => '78910',
'display_name' => 'Registration'
)
);
?>
Required parameters
| Value | Type | Description |
|---|---|---|
| contact_uid | string | Unique identifier referring to a contact, it must match a unique ID in your application like database ID or email address. |
| event_uid | string | Event name. |
Recommanded fields
| Value | Type | Description |
|---|---|---|
| account_uid | string | Account id is a link to an account already created. |
| display_name | string | Human readable event name. |
Optional parameters
You can send any parameter.
Pageview
Pageviews are called when recording a specific page in the application. Pageviews are specific to User defined by their unique_id.
$smclient.pageview(
:contact_uid => "123456",
:params => {
account_uid: "78910",
visit_url: "http://myproduct.com/onboarding",
visit_ip: "XX.XX.XX.XX",
visit_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
}
)
sm.track_pageview("123456", {
"account_uid" : "78910",
"visit_ip": "0.0.0.0",
"visit_url": "/home",
"visit_agent": "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36"
})
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
-d '{"contact_uid":"123456", "event_uid" : "pageview", "params" : {"account_uid" : "78910", "visit_url" : "http://myproduct.com/onboarding", "visit_ip" : "XX.XX.XX.XX", "visit_agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"}' \
'https://api.salesmachine.io/v1/track/event'
salesmachine.pageview("123456", {
account_uid : "78910",
});
<?php
Salesmachine::track_pageview(
"123456",
array(
'visit_url' => 'http://myproduct.com/onboarding',
'visit_ip' => 'XX.XX.XX.XX',
'visit_agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36'
));
?>
Required parameters
| Value | Type | Description |
|---|---|---|
| contact_uid | string | Unique identifier referring to a contact, it must match a unique ID in your application like database ID or email address. |
Recommanded fields
| Value | Type | Description |
|---|---|---|
| account_uid | string | Account id is a link to an account already created. |
| visit_ip | string | We use it to geolocalize your clients. |
Optional parameters
You can send any parameter.
Alias
Only avaiable using http calls.
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' \
-d '{"contact_uid":"123456", "alias" : "789"}' \
'https://api.salesmachine.io/v1/alias'
Alias enable mapping between two contacts with two different contact_uid but which are the same contact. When calling alias, the two concerned contacts fields and activities are merged and all calls using on of the two contact_uid will be mapped to the same contact.
Required parameters
| Value | Type | Description |
|---|---|---|
| contact_uid | string | Unique identifier referring to a contact, it must match a unique ID in your application like database ID or email address. |
| alias | string | Unique identifier referring to a contact, it must match a unique ID in your application like database ID or email address. |
Optional parameters
There is no optional parameters for alias calls.
Revenue

Send recurring revenue data to Salesmachine to monitor your revenue health. Monthly Recurring Revenue (MRR) is the standard value you must send to Salesmachine. It should be sent as a parameter called mrr in contacts or accounts.
| Value | Type | Description |
|---|---|---|
| mrr | number | Monthly Recurring Revenue |
Batch
Already used by the library.
curl -X POST -H "Content-Type: application/json" -u 'YOUR_API_TOKEN:' /
-d '[{"account_uid":"78910", "params" : {"display_name":"Acme", "employee_count":12}, "method":"account"}, {"contact_uid":"123456", "event_uid" : "user_registration", "params" : {"account_uid" : "78910", "display_name" : "Registration"}, "method":"event"}, {"contact_uid":"123456", "event_uid" : "payment", "params" : {"account_uid" : "78910", "display_name" : "Payment"}, "method":"event"}]' /
'https://api.salesmachine.io/v1/batch'
Batch is used to send mulitple events, accounts or contacts on one call.
Required parameters
Required paramters depends on batch calls, but the batch method is mandatory for each subcall.
| Value | Type | Description |
|---|---|---|
| method | string | Can be one of contact, account, or event |
Errors
Salesmachine API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request – Your request sucks |
| 401 | Unauthorized – Your API key is wrong |
| 404 | Not Found – The specified url could not be found |
| 405 | Method Not Allowed – You tried to access our api with an invalid method |
| 406 | Not Acceptable – You requested a format that isn’t json |
| 429 | Too Many Requests – You’re sending too many requests! Slow down, or if you have a high traffic webapp, contact us :-) |
| 500 | Internal Server Error – We had a problem with our server. Try again later. |
| 503 | Service Unavailable – We’re temporarily offline for maintenance. Please try again later. |