HTTP API
You can use the Freshpaint HTTP API to send server side events into Freshpaint. See the server side source docs for information on how you can use server side events.
Using the HTTP API
The Freshpaint server-side API can be used to send data from your backend to Freshpaint. To send a server-side event, you make a POST
request to https://api.perfalytics.com/track with the event you want to send. Events have the following format:
Properties
The following properties are required:
Argument | Type | Description |
---|---|---|
distinct_id |
| An identifier that uniquely identifies the user that performed the event (usually email address). This is the same as the identifier you would pass to freshpaint.identify(). |
token |
| Your environment ID. You can get it from the Server Side API section on the sources page of the Freshpaint app. |
time |
| The epoch time the event occurred, in seconds. The epoch time is the number of seconds since January 1st 1970. |
The following properties are optional:
$device_id |
| A unique identifier for the device the event was sent from. This is sometimes referred to as the |
$insert_id |
| A unique identifier for this event. Events that have the same |
In addition to the above properties, you can send any additional custom properties you want.
IP Address
The IP address from where you send the server-side event will be automatically captured. It may, however, be the case that you want to submit a different IP address. For example, your server may be located in a data center, but you may want a purchase event to reflect the IP address of the actual purchaser.
In that case, you can send the IP address by submitting a property named $ip
. For example:
Example code:
The Freshpaint HTTP API will return a 200 as soon as the event has been received. Validation of the event will be performed after the event is received. If you want to confirm Freshpaint has received your event, you should check the Freshpaint Live View.
Freshpaint APIs are fast, and we're committed to 99.9% uptime (see our SLA https://www.freshpaint.io/sla). That said, we recommend communicating with Freshpaint APIs in a "fire and forget" manner, for example by making the request from a separate thread or by using an async-await pattern if your language supports it. We recommend this so that your server processing is not blocked waiting for the Freshpaint API to respond.
Server-side Identify
You can also pass identify events server-side to attach user properties to users from the server. To do so, you pass a server-side event to the HTTP API with the following format:
The following properties are required:
Argument | Type | Description |
---|---|---|
distinct_id |
| An identifier that uniquely identifies the user that performed the event (usually email address). |
token |
| Your environment ID. You can get it from the Server Side API section on the sources page of the Freshpaint app. |
time |
| The epoch time the event occurred. The epoch time is the number of seconds since January 1st 1970. |
Configuring Which Destinations Server-Side Events Are Sent To
There are two ways to configure server-side events to go to. First you can pass in a list of hardcoded destinations as part of the event in the $options
property. You can either pass in a list of destinations the event should not go to:
Or pass in a list of destinations the event should only go to:
Alternatively, you can go to the event schema page for the event, go to Settings
. And flip the toggle for "Override hardcoded destinations". Then you'll be able to toggle each event on a per destination basis.
De-duplication
Events sent to the HTTP API are considered duplicates if they have the same value for the $insert_id
property. If $insert_id
is not provided, Freshpaint will compute a value based on the time
and $device_id
properties, so that if two events have the same value for these properties then they will be treated as duplicates.
To avoid events being de-duplicated erroneously, you may want to ensure that the time
property you provide to the HTTP API uses millisecond precision.
For ultimate control over de-duplication behavior, consider providing an $insert_id
with each event. A good way to generate an $insert_id
is to hash together several pieces of information that uniquely identify the event, such as the timestamp, device id, user id, and event name.
Rate Limits
There is a 5000 request/second burst request limit for the HTTP API. Please throttle your requests accordingly. Contact support@freshpaint.io if you have any questions.
Last updated