Skip to main content

Subjects

The Subject object lets you send any additional information about your application's environment, current user, etc to Snowplow.

To create a new subject:

$subject = new Subject();

By default the subject has one piece of information in it already, the platform ["p" => "srv"].

The Subject class contains a variety of 'set' methods to attach extra data to your event.

These set methods can be called either directly onto a subject object:

$subject = new Subject();
$subject->setPlatform("tv");

Or they can be called through the tracker object:

$tracker->returnSubject()->setPlatform("tv");

You can also change the active Subject a Tracker is operating with:

$subject2 = new Subject();
$tracker->updateSubject($subject2);

setPlatform

The default platform is "srv". You can change the platform of the subject by calling:

$subject->setPlatform($platform);

For example:

$subject->setPlatform("tv") # Running on a Connected TV

For a full list of supported platforms, please see the Event Parameters reference.

setUserId

You can set the user ID to any string:

$subject->setUserId($id);

Example:

$subject->setUserId("jbeem");

setScreenResolution

If your PHP code has access to the device's screen resolution, then you can pass this in to Snowplow too:

$subject->setScreenResolution($width, $height);

Both numbers should be positive integers; note the order is width followed by height. Example:

$subject->setScreenResolution(1366, 768);

setViewPort

If your PHP code has access to the viewport dimensions, then you can pass this in to Snowplow too:

$subject->setViewPort($width, $height);

Both numbers should be positive integers; note the order is width followed by height. Example:

$subject->setViewPort(300, 200);

setColorDepth

If your PHP code has access to the bit depth of the device's color palette for displaying images, then you can pass this in to Snowplow too:

$subject->setColorDepth($depth);

The number should be a positive integer, in bits per pixel. Example:

$subject->setColorDepth(32);

setTimezone

This method lets you pass a user's timezone in to Snowplow:

$subject->setTimezone($timezone);

The timezone should be a string:

$subject->setTimezone("Europe/London");

setLanguage

This method lets you pass a user's language in to Snowplow:

$subject->setLanguage($language);

The language should be a string:

$subject->setLanguage('en');

setIpAddress

This method lets you pass a user's IP Address in to Snowplow:

$subject->setIpAddress($ip);

The IP Address should be a string:

$subject->setIpAddress('127.0.0.1');

setUseragent

This method lets you pass a useragent in to Snowplow:

$subject->setUseragent($useragent);

The useragent should be a string:

$subject->setUseragent('Agent Smith');

setNetworkUserId

This method lets you pass a Network User ID in to Snowplow:

$subject->setNetworkUserId($networkUserId);

The network user id should be a string:

$subject->setNetworkUserId("network-id");

setDomainUserId

This method lets you pass a Domain User ID in to Snowplow:

$subject->setDomainUserId($domainUserId);

The domain user id should be a string:

$subject->setDomainUserId("domain-id");

setSessionId

This method lets you pass a session ID in to Snowplow:

$subject->setSessionId($sessionId);

The session ID should be a string:

$subject->setSessionId("759e1c9a-6b74-403c-8b6f-18eb9f0c2f02");

setSessionIndex

This method lets you pass a session index in to Snowplow:

$subject->setSessionIndex($sessionIndex);

The session index should be a number:

$subject->setSessionIndex(1);

setRefr

This method lets you set the referrer URL to a full URI:

$subject->setRefr("https://example.com/previous-page");

setPageUrl

This method lets you set the page URL to a full URI string:

$subject->setPageUrl("https://example.com/current-page");