Marketing
Send a custom event
Records a custom event (“user did X”) for a contact. Call it server-to-server with an API key from your backend when something happens in your app (signup, purchase, upgrade, …). Any active workflow whose trigger is that event name enrolls the contact. If the email isn’t a known contact yet, the event is still recorded and matched once the contact exists. Fire-and-forget — a 200 means the event was accepted, not that a workflow ran. Event names may not contain a colon.
POST
/
marketing
/
events
Send a custom event
curl --request POST \
--url https://api.jetemail.com/marketing/events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jane@example.com",
"name": "purchase_completed",
"properties": {
"plan": "pro",
"amount": 4900
}
}
'import requests
url = "https://api.jetemail.com/marketing/events"
payload = {
"email": "jane@example.com",
"name": "purchase_completed",
"properties": {
"plan": "pro",
"amount": 4900
}
}
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({
email: 'jane@example.com',
name: 'purchase_completed',
properties: {plan: 'pro', amount: 4900}
})
};
fetch('https://api.jetemail.com/marketing/events', 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.jetemail.com/marketing/events",
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([
'email' => 'jane@example.com',
'name' => 'purchase_completed',
'properties' => [
'plan' => 'pro',
'amount' => 4900
]
]),
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.jetemail.com/marketing/events"
payload := strings.NewReader("{\n \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\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.jetemail.com/marketing/events")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jetemail.com/marketing/events")
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 \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true
}Authorizations
API key for account management endpoints. Use your api_ prefixed token.
Body
application/json
Response
Event accepted
⌘I
Send a custom event
curl --request POST \
--url https://api.jetemail.com/marketing/events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jane@example.com",
"name": "purchase_completed",
"properties": {
"plan": "pro",
"amount": 4900
}
}
'import requests
url = "https://api.jetemail.com/marketing/events"
payload = {
"email": "jane@example.com",
"name": "purchase_completed",
"properties": {
"plan": "pro",
"amount": 4900
}
}
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({
email: 'jane@example.com',
name: 'purchase_completed',
properties: {plan: 'pro', amount: 4900}
})
};
fetch('https://api.jetemail.com/marketing/events', 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.jetemail.com/marketing/events",
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([
'email' => 'jane@example.com',
'name' => 'purchase_completed',
'properties' => [
'plan' => 'pro',
'amount' => 4900
]
]),
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.jetemail.com/marketing/events"
payload := strings.NewReader("{\n \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\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.jetemail.com/marketing/events")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jetemail.com/marketing/events")
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 \"email\": \"jane@example.com\",\n \"name\": \"purchase_completed\",\n \"properties\": {\n \"plan\": \"pro\",\n \"amount\": 4900\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true
}