Record a contact event
Records a behavioral event for a contact (auto-created if unknown) - the signal that drives automations and audience segmentation. Slugs are normalized to snake_case (signedUp becomes signed_up). A 200 guarantees the event is persisted; any automation it triggers runs asynchronously.
POST
/v2/ accounts/ {accountId}/ eventsPath parameters
accountIdstringrequired
The account the request is scoped to.
Request body
emailstring (email)required
The contact’s email; the contact is auto-created if unknown.
slugstringrequired
Event name; normalized to snake_case at persist time.
Response
The created event, carrying the normalized slug.
Errors
400
The request body or parameters failed validation.
401
Missing or invalid token, or the token is not authorized for this account/user.
See Errors and rate limits for what error responses look like.
curl --location --request POST 'https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/events' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "[email protected]",
"slug": "signup"
}'
const res = await fetch('https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SENDSTREAK_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"email": "[email protected]",
"slug": "signup"
})
});
import os, requests
res = requests.post(
'https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/events',
headers={'Authorization': f"Bearer {os.environ['SENDSTREAK_TOKEN']}"},
json={
"email": "[email protected]",
"slug": "signup"
},
)
{
"_id": "665f0a2b1c9d440012ab34cd",
"accountId": "664b9e0f2a7c330011cd56ef",
"contactId": "665f0a2b1c9d440012ab34cd",
"slug": "signup",
"timestamp": "2026-07-07T09:30:00.000Z"
}