Record a visit
curl --request POST \
--url https://api.marzipan.co/v1/visits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"utmSource": "instagram",
"utmMedium": "social",
"utmCampaign": "summer-sale",
"landingPage": "https://shop.marzipan.co/collections/cakes",
"referrer": "https://instagram.com",
"sessionId": "s_a1b2c3d4e5f6"
}
'import requests
url = "https://api.marzipan.co/v1/visits"
payload = {
"utmSource": "instagram",
"utmMedium": "social",
"utmCampaign": "summer-sale",
"landingPage": "https://shop.marzipan.co/collections/cakes",
"referrer": "https://instagram.com",
"sessionId": "s_a1b2c3d4e5f6"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
utmSource: 'instagram',
utmMedium: 'social',
utmCampaign: 'summer-sale',
landingPage: 'https://shop.marzipan.co/collections/cakes',
referrer: 'https://instagram.com',
sessionId: 's_a1b2c3d4e5f6'
})
};
fetch('https://api.marzipan.co/v1/visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.marzipan.co/v1/visits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'utmSource' => 'instagram',
'utmMedium' => 'social',
'utmCampaign' => 'summer-sale',
'landingPage' => 'https://shop.marzipan.co/collections/cakes',
'referrer' => 'https://instagram.com',
'sessionId' => 's_a1b2c3d4e5f6'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.marzipan.co/v1/visits"
payload := strings.NewReader("{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.marzipan.co/v1/visits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.marzipan.co/v1/visits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}"
response = http.request(request)
puts response.read_body{
"id": "7f3d9c1a-2b4e-4c6d-8e0f-1a2b3c4d5e6f",
"sessionId": "s_a1b2c3d4e5f6"
}{
"message": "<string>",
"errors": {}
}Analytics
Record a visit
Record a storefront visit for attribution and analytics. At least one UTM parameter is required, and the endpoint is throttled. Returns the stored visit id and the session id used for touchpoint tracking.
POST
/
visits
Record a visit
curl --request POST \
--url https://api.marzipan.co/v1/visits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"utmSource": "instagram",
"utmMedium": "social",
"utmCampaign": "summer-sale",
"landingPage": "https://shop.marzipan.co/collections/cakes",
"referrer": "https://instagram.com",
"sessionId": "s_a1b2c3d4e5f6"
}
'import requests
url = "https://api.marzipan.co/v1/visits"
payload = {
"utmSource": "instagram",
"utmMedium": "social",
"utmCampaign": "summer-sale",
"landingPage": "https://shop.marzipan.co/collections/cakes",
"referrer": "https://instagram.com",
"sessionId": "s_a1b2c3d4e5f6"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
utmSource: 'instagram',
utmMedium: 'social',
utmCampaign: 'summer-sale',
landingPage: 'https://shop.marzipan.co/collections/cakes',
referrer: 'https://instagram.com',
sessionId: 's_a1b2c3d4e5f6'
})
};
fetch('https://api.marzipan.co/v1/visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.marzipan.co/v1/visits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'utmSource' => 'instagram',
'utmMedium' => 'social',
'utmCampaign' => 'summer-sale',
'landingPage' => 'https://shop.marzipan.co/collections/cakes',
'referrer' => 'https://instagram.com',
'sessionId' => 's_a1b2c3d4e5f6'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.marzipan.co/v1/visits"
payload := strings.NewReader("{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.marzipan.co/v1/visits")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.marzipan.co/v1/visits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"utmSource\": \"instagram\",\n \"utmMedium\": \"social\",\n \"utmCampaign\": \"summer-sale\",\n \"landingPage\": \"https://shop.marzipan.co/collections/cakes\",\n \"referrer\": \"https://instagram.com\",\n \"sessionId\": \"s_a1b2c3d4e5f6\"\n}"
response = http.request(request)
puts response.read_body{
"id": "7f3d9c1a-2b4e-4c6d-8e0f-1a2b3c4d5e6f",
"sessionId": "s_a1b2c3d4e5f6"
}{
"message": "<string>",
"errors": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your API token.
Body
application/json
Maximum string length:
255Maximum string length:
255Maximum string length:
255Maximum string length:
255Maximum string length:
255Maximum string length:
2048Maximum string length:
2048Existing session id to continue touchpoint tracking; a new one is generated when omitted.
Maximum string length:
64⌘I

