Visitor Activities API Endpoint
The Visitor Activities endpoint allows developers to retrieve all recorded activities for a specific visitor. This data can be used to create personalized experiences based on the visitor's past interactions with your site.
Endpoint Details
- URL:
/wp-json/personalizewp/v1/visitor-activities
- Method: POST
- Content Type: application/json
Request Parameters
The request body should be a JSON object containing the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
uid |
string | Yes | The visitor's unique identifier |
filters |
array | No | Array of filters to apply to the activities |
Filters
The filters
parameter allows you to filter the returned activities by specific criteria. The filter is structured as an array of key/value pairs where each key is one of the following:
id
- Filter by activity IDactivity_type
- Filter by activity typeurl
- Filter by the URL where the activity occurredobject_id
- Filter by object IDobject_type
- Filter by object type
When multiple filters are provided, they are combined using an AND condition, meaning all conditions must be met for an activity to be included in the results.
Response
The endpoint returns an array of activity records associated with the visitor. Each activity record contains the following fields:
Field | Type | Description |
---|---|---|
id |
number | The activity's unique identifier |
activity_type |
string | The activity's type |
url |
string | The recorded object's URL |
object_id |
number | The recorded object's unique identifier |
object_type |
string | The recorded object's type |
lead_score |
number | The recorded object's lead score |
created |
date (UTC) | When the activity was created |
Example Usage
Basic Request
This example shows how to fetch all activities for the current visitor:
( async () => { const PWP = localStorage.getItem('pwp_tracked_user') || ''; const UID = (PWP) ? JSON.parse(PWP).id : null; if (UID) { const baseURL = '/wp-json/'; // This is available on frontend as "window.pwpSettings.root" const namespace = 'personalizewp/v1/'; const endpoint = 'visitor-activities'; const response = await fetch( `${baseURL}${namespace}${endpoint}`, { method: "POST", cache: "no-cache", headers: { "Accept": "application/json, */*;q=0.1", "Cache-Control": "no-cache, private", "Content-type": "application/json", "X-Requested-With": "XMLHttpRequest", }, body: JSON.stringify({ uid: UID }), }); if (response.ok){ const activities = await response.json(); console.log(activities); } } })();
Request with Filters
This example shows how to fetch only activities of a specific type and object type:
( async () => { const PWP = localStorage.getItem('pwp_tracked_user') || ''; const UID = (PWP) ? JSON.parse(PWP).id : null; if (UID) { const baseURL = '/wp-json/'; // Available as "window.pwpSettings.root" const namespace = 'personalizewp/v1/'; const endpoint = 'visitor-activities'; // Filter for only viewed products const filters = [ { activity_type: 'view' }, { object_type: 'product' } ]; const response = await fetch( `${baseURL}${namespace}${endpoint}`, { method: "POST", cache: "no-cache", headers: { "Accept": "application/json, */*;q=0.1", "Cache-Control": "no-cache, private", "Content-type": "application/json", "X-Requested-With": "XMLHttpRequest", }, body: JSON.stringify({ uid: UID, filters: filters }), }); if (response.ok){ const viewedProducts = await response.json(); console.log(viewedProducts); } } })();
Common Use Cases
The Visitor Activities endpoint is particularly useful for:
- Creating "Recently Viewed" product displays
- Building personalized product recommendations
- Tracking user engagement with specific content
- Creating conditional content based on past visitor behavior
- Analyzing user journey through your website
For a practical implementation example, see our guide on Creating a "Previously Viewed" Block.
Notes
- The endpoint currently does not support pagination, so all matching activities will be returned in a single response.
- Activities are returned in chronological order, with the most recent activities first.
- Consider implementing caching for frequent requests to improve performance.