Parse.ly Destination

Destination Info
Components
Connection Modes
Device-mode Cloud-mode
Web Web
Mobile Mobile
Server Server

Parse.ly provides web analyses and content optimization for online publishers by partnering with them to provide clear audience insights through intuitive analytics.

Getting Started

  1. From the Segment web app, click Catalog.
  2. Search for “Parsely” in the Catalog, select it, and choose which of your sources to connect the destination to.
  3. Enter your Domain and enable the destination in Segment. (To enable this destination, you use your Parsely website domain as your API key.)
  4. Segment automatically starts sending data from the source you selected.

When you enable Parse.ly from the Segment web app, your changes appear in the Segment CDN in about 45 minutes, and then Analytics.js starts asynchronously loading Parse.ly’s JavaScript onto your page.

Remember to remove the Parse.ly native snippet from your page.

Parsely is more useful when you implement JSON-LD metadata across your website as described here.

Page

By default, unless you are using Dynamic Tracking, Parse.ly automatically tracks pageviews in the background, so you do not need to track them separately with Segment’s Page method.

If you are using dynamic tracking, you must explicitly let us know in your integration settings. If this setting is enabled, we will disable Parse.ly’s autotracking functionality and begin sending their API pageview events only in response to analytics.page() events.

Note: You can only track pageviews if you are using the Parsely destination with our JavaScript Analytics.js library, and not using our server side integration with Parse.ly.

Identify

If you’re not familiar with the Segment Specs, take a look to understand what the Identify method does. An example call would look like:

analytics.identify('ze8rt1u89', {
  name: 'Zaphod Kim',
  gender: 'Male',
  email: 'jane.kim@example.com',
  phone: '1-401-826-4421',
  address: {
    city: 'San Francisco',
    state: 'Ca',
    postalCode: '94107'
  }
});

Track

You must adhere to our video tracking spec (and have video tracking enabled in Parse.ly) in order to use this functionality.

Video tracking is possible with either web or server sources.

Group

If you’re not familiar with the Segment Specs, take a look to understand what the Group method does. An example call would look like:

analytics.group("0e8c78ea9d97a7b8185e8632", {
  name: "Initech",
  industry: "Technology",
  employees: 329,
  plan: "enterprise",
  "total billed": 830
});

Alias

If you’re not familiar with the Segment Specs, take a look to understand what the Alias method does. An example call would look like:

analytics.alias("507f191e81");

Mapping custom properties to semantic Parsely properties

If you’d like to map certain semantic Parse.ly properties to your own custom properties (ones that do not abide by our page spec, you can define your mappings in your Segment destination settings! You can put the name of your Segment property on the left and the Parse.ly property on the right hand side.

We currently support mapping the following Parse.ly properties (make sure you spell these correctly on the right hand side of this setting!):

  • articleSection
  • thumbnailUrl
  • dateCreated
  • headline
  • keywords
  • creator
  • url

Note: This feature only works if you also have enabled Enable In-Pixel Metadata and Enable Dynamic Tracking.

Video Content Started

When a user starts playback of a video, you should use our Video Content Started event. We will map the properties from the Video Content Started event to the following Parse.ly video metadata fields:

Parsely Parameter Segment Property Data Type
videoId properties.assetId String
metadata.title properties.title String
metadata.image_url context.integrations.Parsely.imageUrl String
metadata.pub_date_tmsp properties.airdate String
metadata.section properties.genre String
metadata.authors properties.publisher String
metadata.tags context.integrations.Parsely.tags Array
urlOveride context.page.url String

Because tags and imageUrl are not recognized as properties of a standard Video Content Started event, we ask that you pass those as integration specific options.

Example

analytics.track('Video Content Started', {
    assetId: '12345',
    title: 'Magic Eye: The optical illusion, explained',
    airdate: 'Tue May 16 2017 17:02:05 GMT-0700 (PDT)',
    genre: 'Science',
    publisher: 'Vox'
    }, {
    integrations: {
        Parsely: {
            imageUrl: 'https://cdn.cloudfront.com/images/image_file.png'
            tags: ['tags', 'go', 'here']
        }
    }
});

Video Playback Paused

When a user pauses playback of a video, you should use our Video Playback Paused event. Assuming the Pause event happens after a Video Content Started event, we will automatically map the video metadata for you.

Video Playback Interrupted

When a playback of a video is interrupted, you should use our Video Playback Interrupted event. This event just takes an assetId and maps to Parse.ly’s reset method (documentation here).

Note: this event is only relevant for web tracking. Our server side integration does not support this event.

Parsely Parameter Segment Property Data Type
videoId properties.assetId String

Example

analytics.track('Video Playback Paused', {
    assetId: '12345'
    // Feel free to pass as many other properties as you like here.
    // This is just an example showing what Parse.ly will receive.
});

Video Content Playing

(Note: this event is only required for server side tracking)

When using Parse.ly on the web using our JavaScript SDK, video heartbeats are captured by their SDK automatically. However, if you are using this destination with a Server side source, you must pass heartbeat events manually using our Video Content Playing event.

Important: These events must be sent in 10 second increments.

The only required property is the video’s assetId.

Example:

analytics.track({
  userId: '019mr8mf4r',
  event: 'Video Content Playing',
  properties: {
    sessionId: '12345',
    assetId: '0129370',
    podId: 'segA',
    title: 'Interview with Tony Robbins',
    description: 'short description',
    keywords: ['entrepreneurship', 'motivation'],
    season: '2',
    episode: '177',
    genre: 'entrepreneurship',
    program: 'Tim Ferris Show',
    publisher: 'Tim Ferris',
    position: 20,
    totalLength: 360,
    channel: 'espn',
    fullEpisode: true,
    livestream: false,
    airdate: '1991-08-13'
  }
});

Video Content Completed

This event is only required for server side tracking.

To track the completion of a video, use our Video Content Completed event.

Make sure you are sending at minimum, assetId, totalLength, and position as properties.

Example:

analytics.track({
  userId: '019mr8mf4r',
  event: 'Video Content Completed',
  properties: {
    sessionId: '12345',
    assetId: '0129370',
    podId: 'segA',
    title: 'Interview with Tony Robbins',
    description: 'short description',
    keywords: ['entrepreneurship', 'motivation'],
    season: '2',
    episode: '177',
    genre: 'entrepreneurship',
    program: 'Tim Ferris Show',
    publisher: 'Tim Ferris',
    position: 20,
    totalLength: 360,
    channel: 'espn',
    fullEpisode: true,
    livestream: false,
    airdate: '1991-08-13'
  }
});

Track URL

The destination does not currently support Parsely’s trackURL method. contact Segment if this is important to you.

Engage

You can send computed traits and audiences generated using Engage to this destination as a user property. To learn more about Engage, schedule a demo.

For user-property destinations, an identify call is sent to the destination for each user being added and removed. The property name is the snake_cased version of the audience name, with a true/false value to indicate membership. For example, when a user first completes an order in the last 30 days, Engage sends an Identify call with the property order_completed_last_30days: true. When the user no longer satisfies this condition (for example, it’s been more than 30 days since their last order), Engage sets that value to false.

When you first create an audience, Engage sends an Identify call for every user in that audience. Later audience syncs only send updates for users whose membership has changed since the last sync.

Real-time to batch destination sync frequency

Real-time audience syncs to Parse.ly may take six or more hours for the initial sync to complete. Upon completion, a sync frequency of two to three hours is expected.

Settings

Segment lets you change these destination settings from the Segment app without having to touch any code.

Setting Description
Domain
(required)
string. Parsely’s required API Key should be your website domain. (ie. segment.com)
Map Custom Page Properties text-map, defaults to {}.

Map your custom .page() property names on the left and semantic Parsely properties on the right.
Enable Dynamic Tracking boolean, defaults to FALSE .

If you enable Dynamic Tracking, Segment will disable Parsely autotracking and instead explicitly proxy your page() calls to Parsely. This feature is recommended if you want Segment to pass additional pageview metadata collected with your .page() properties through to Parsely. See here for more information.
Enable In-Pixel Metadata boolean, defaults to FALSE .

If you enable In-Pixel Metadata, Segment will map page properties to Parsely’s metadata format, allowing you to eschew their out-of-band metadata crawling. This has tradeoffs and is not the recommended approach— please be sure to check with your Parsely rep prior to enabling this setting. Requires Dynamic Tracking to be set to true.
Track Events boolean, defaults to FALSE .

Parsely can track custom events, but does not surface these events in their Dashboard or UI. If you’d like your Segment track() calls to flow to Parsely’s Raw Data Pipeline product, enable this setting. See here for more information.

This page was last modified: 27 Oct 2023



Get started with Segment

Segment is the easiest way to integrate your websites & mobile apps data to over 300 analytics and growth tools.
or
Create free account