---
updatedAt: 2026-04-14T17:28:48.000Z
agentTools:
  projectIndex: https://documentation.viafoura.com/llms.txt
---

# Data Export

# **Overview**

This describes files shared in Raw Data Export, which exports messages published\
by users on Viafoura widgets, along with other information such as users and likes on a daily\
basis. The files are generated at approximatly 6am UTC every day.

There are three main files shared by default:

* comments\_content
* user\_information
* container\_ids

There are a few optional files that we can provide upon request:

* moderation\_assessments
* user\_assessments
* poll\_actions
* engage\_time

This document is intended to give more context about the data contained in each column of\
those files, and to provide information on how to access the data and connect information\
across files.

# **Getting Access**

We offer three standard options to enable access to raw data export:

* **S3 access via client IAM Role**: If the client could provide us with an AWS IAM role, we\
  can allow access to client specific S3 bucket in our data export account. Specifically, the\
  role would have permissions to list objects in the bucket ("s3:ListBucket") and download\
  each object ("s3:GetObject").
* **SFTP**: The client could access the bucket via SFTP , in which case we would require a\
  public key from the machine(s) that will access via SFTP.
* **Snowflake Data Share**: For clients using Snowflake, we can provide access via Snowflake's native secure data sharing. The client would need to provide their Snowflake Account Identifier (e.g., orgname.account\_name) to get started. This option is available for clients hosted on `AWS us-east-1`. Clients on a different region or cloud provider should reach out to client support to discuss options. Please note that the shared objects are intended for data ingestion only. Clients are responsible for copying and materializing the data into their own Snowflake environment before using it for analytical or reporting purposes, as querying directly against the share will result in slow and costly queries. For more information on consuming shared data, refer to the Snowflake documentation: <https://docs.snowflake.com/en/user-guide/data-share-consumers>.

More information would be shared with the client once everything has been set up on our end.\
In most cases, daily files would be stored in the "RawData" folder and historical data would be\
shared in the "HistoricalData" folder.

# **File Specifications**

Daily files are generated based on raw data events collected on the previous day without\
advanced processing. It is recommended that the client should create tables to store historical\
data and update records as new data comes in as 1) some information could change over time,\
such as username, and 2) some identifiers could appear on diﬀerent days in diﬀerent files,\
making it hard to connect data across diﬀerent files using just one day’s data.

In most of the files, each line is an action, uniquely identified by event\_uuid field. Actions capture interactions performed by actors, and those actors might be users, moderators, applications and APIs (among others). Users refer to registered users unless stated otherwise.\
All timestamps are in UTC.

Note that not all data events are captured so not all information would be available in the files.\
For example, an updated username would only show up in the user\_information file if the user’s logged in status changes.

For S3 and SFTP access, files are plain text extractions stored in the "RawData" folder (daily) and "HistoricalData" folder (historical), with the following characteristics:
● Format: CSV\
● Delimiter: ","\
● Text qualifier: """\
● Contains header: True\
● Encryption: None\
● File name: Each file name would have a prefix based on file creation time in UTC in the\
format of "YYYYMMDD*HHMMSS*" like "20231005*060126*"

# **Comments Content**

This file contains all messages published by users, whether they are the main thread comment\
(the message that started the sequence of replies) or a reply (a message linked to a main\
comment), as well as other actions performed on the comments.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        content_uuid
      </td>

      <td>
        Id of the content item that was interacted on
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-036  
        8f9a80495
      </td>
    </tr>

    <tr>
      <td>
        container_uuid
      </td>

      <td>
        Id of the widget where the action took place
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-036  
        8f9a80495
      </td>
    </tr>

    <tr>
      <td>
        payload_parent_uuid
      </td>

      <td>
        The UUID of the post to which this is a reply, or the container_uuid if it is top level
      </td>

      <td>
        UUID (Universally unique  
        identifier) ex. 00000000-0000-4000-8000-036  
        8f9a80495
      </td>
    </tr>

    <tr>
      <td>
        actor_uuid
      </td>

      <td>
        ID of the user or actor who caused the interaction. This  
        could be a User, a Moderator or an internal ID
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-036  
        8f9a80495
      </td>
    </tr>

    <tr>
      <td>
        event_uuid
      </td>

      <td>
        Unique identifier of the event
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-036  
        8f9a80495
      </td>
    </tr>

    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        message_type
      </td>

      <td>
        Defines the type of message where the action took place.
      </td>

      <td>
        String

        Main posts have these values:  
        livecomment _post  
        chat_message  
        liveblog_post  
        livereview _post

        Reply posts have these values:  
        reply_to_livecomment_post  
        reply_to_chat_message  
        reply_to_liveblog_post  
        reply_to_livereview_post
      </td>
    </tr>

    <tr>
      <td>
        action
      </td>

      <td>
        Action that generated the entry.
      </td>

      <td>
        String

        There are several possible values and they are displayed in the Action table below.
      </td>
    </tr>

    <tr>
      <td>
        payload_metadata_origin_url
      </td>

      <td>
        Display the entire URL
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        timestamp
      </td>

      <td>
        Timestamp of the event that results in an entry
      </td>

      <td>
        Timestamp  
        '2020-10-13 13:28:06.340'
      </td>
    </tr>

    <tr>
      <td>
        payload_content
      </td>

      <td>
        The text published by the user
      </td>

      <td>
        String  
        ex. 'Best wishes.'
      </td>
    </tr>
  </tbody>
</Table>

List of actions available (not all may be in use)

| Action                   | Meaning                                                                         |
| :----------------------- | :------------------------------------------------------------------------------ |
| pinned                   | when a post is pinned to the top of the thread                                  |
| updated                  | when a post is edited                                                           |
| disliked                 | when a post is disliked or down voted by a user                                 |
| created                  | when a post is created                                                          |
| picked                   | when a post has been selected, as an editor's pick                              |
| unliked                  | when a like to a post is reverted                                               |
| disabled                 | when a message is removed from view and general public cannot see it anymore    |
| unpicked                 | when a post has been removed, as an editor's pick                               |
| deleted                  | when a user has voluntarily deleted their own post                              |
| liked                    | when a post is liked                                                            |
| undisliked               | when a dislike to a post is reverted                                            |
| flags\_cleared           | when a moderator clears flags of a post                                         |
| flagged                  | when a user flags a post                                                        |
| spammed                  | when a post is marked as spam                                                   |
| visible                  | when a post is visible to the general public (barring mutes, ghost bans)        |
| unpinned                 | when a post is unpinned from top of a thread                                    |
| top\_content\_excluded   | when a moderator excludes comment from top comments                             |
| top\_content\_included   | when a comment is included into top comments for the first time (automatically) |
| top\_content\_reincluded | when a moderator re-includes comment from top comments                          |

# **User Information**

This file provides additional information about the users that interacted with Viafoura widgets,\
including username and third party id if available.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        user_id
      </td>

      <td>
        Id of the user that made the action
      </td>

      <td>
        Big Int  
        ex. 8081300019356
      </td>
    </tr>

    <tr>
      <td>
        actor_uuid
      </td>

      <td>
        ID of the user or actor who caused the interaction. This could be a User, a Moderator or an internal ID
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        third_party_id
      </td>

      <td>
        This is the actor ID when user creates an account using third  
        party services, such as Google, Facebook, LoginRadius
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        username
      </td>

      <td>
        Displays the username chosen by the user
      </td>

      <td>
        String  
        'Some Name'
      </td>
    </tr>
  </tbody>
</Table>

# **Container IDs**

This file lists containers created or updated on a given day. A container is where comments\
could be posted.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        container_uuid
      </td>

      <td>
        ID of the widget
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        payload_container_id
      </td>

      <td>
        Id of the widget in a different  
        format
      </td>

      <td>
        Big Int  
        ex. 8081300019356
      </td>
    </tr>
  </tbody>
</Table>

# **Moderation Assessments**

This file provides information about moderation assessments on comments.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        assessment
      </td>

      <td>
        Outcome of assessment.
      </td>

      <td>
        String

        Possible Values:  
        approved  
        deferred  
        rejected
      </td>
    </tr>

    <tr>
      <td>
        assessment_type
      </td>

      <td>
        Type of assessment.
      </td>

      <td>
        String

        Possible Values:  
        content_moderation  
        spam_detection  
        flag_moderation
      </td>
    </tr>

    <tr>
      <td>
        content_container_uuid
      </td>

      <td>
        UUID of container the content  
        was in (livechat id, page id etc)
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        content_source_type
      </td>

      <td>
        Type of content being  
        moderated (see message_type  
        in Comments Content)
      </td>

      <td>
        String
      </td>
    </tr>

    <tr>
      <td>
        entity_uuid
      </td>

      <td>
        UUID of content being  
        moderated
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        provider
      </td>

      <td>
        The entity performing this  
        assessment.
      </td>

      <td>
        String

        Possible Values:  
        Human moderations have these  
        values:  
        console  
        human

        Auto moderations have these  
        values:  
        automod_service  
        automod (deprecated)  
        keepcon (deprecated)

        Auto spam detection has this  
        value:  
        spam_service
      </td>
    </tr>

    <tr>
      <td>
        provider_decision
      </td>

      <td>
        The decision made by the  
        assessment service before  
        settings were applied to it
      </td>

      <td>
        String  
        ex. 'approved'
      </td>
    </tr>

    <tr>
      <td>
        section_uuid
      </td>

      <td>
        Unique site identifier
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        tags
      </td>

      <td>
        Tags attached to the assessment
      </td>

      <td>
        String  
        'ew**

        This describes files shared in Raw Data Export, which exports messages published  
        b'
      </td>
    </tr>

    <tr>
      <td>
        timestamp
      </td>

      <td>
        Timestamp of the event that  
        results in an entry
      </td>

      <td>
        Timestamp  
        '2020-10-13 13:28:06.340'
      </td>
    </tr>
  </tbody>
</Table>

# **User Moderations**

This file provides information about user moderations including user bans, avatar moderations\
and username moderations.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        timestamp
      </td>

      <td>
        Timestamp of the event that results in an entry
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        event_type
      </td>

      <td>
        Event type.
      </td>

      <td>
        String

        Possible Values:  
        ban.user (user bans)  
        user.moderate (avatar and  
        username moderations)
      </td>
    </tr>

    <tr>
      <td>
        content_type
      </td>

      <td>
        The type of content to which  
        interaction is related.
      </td>

      <td>
        String

        Possible Values:  
        username  
        avatar
      </td>
    </tr>

    <tr>
      <td>
        actor_uuid
      </td>

      <td>
        ID of the user or actor who caused the interaction. This  
        could be a Moderator or an internal ID
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        event_uuid
      </td>

      <td>
        Unique identifier of the event
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        interaction_status
      </td>

      <td>
        Status of username/avatar
      </td>

      <td>
        String

        Possible Values:  
        approved  
        rejected
      </td>
    </tr>
  </tbody>
</Table>

# **Poll Actions**

This file provides information about management of polls and engagements in polls.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        timestamp
      </td>

      <td>
        Timestamp of the event that results in an entry
      </td>

      <td>
        Timestamp  
        '2020-10-13 13:28:06.340'
      </td>
    </tr>

    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        container_uuid
      </td>

      <td>
        UUID of container the content  
        was in (livechat id, page id etc)
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        poll_uuid
      </td>

      <td>
        Unique poll identifier
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        poll_title
      </td>

      <td>
        Poll title, only available with management event_type
      </td>

      <td>
        String
      </td>
    </tr>

    <tr>
      <td>
        user_id
      </td>

      <td>
        ID of the user or actor who caused the interaction. This could be a registered or anonymous User, a Moderator or an internal ID
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        event_uuid
      </td>

      <td>
        Unique identifier of the event
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        event_type
      </td>

      <td>
        Event type.
      </td>

      <td>
        String

        Possible Values:  
        engagement (votes)  
        management
      </td>
    </tr>

    <tr>
      <td>
        event_action
      </td>

      <td>
        Event action.
      </td>

      <td>
        Strting

        Possible Values:  
        Possible values when  
        event_type is 'engagement':  
        vote

        Possible values when  
        event_type is 'management':  
        publish  
        close  
        delete
      </td>
    </tr>

    <tr>
      <td>
        voter_picked_option_uuid
      </td>

      <td>
        Poll option picked by voter, only  
        available when event_type is  
        'engagement'
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        poll_options
      </td>

      <td>
        Array containing poll options (option order, text, uuid and votes received), only available when event_type is 'management'
      </td>

      <td>
        Array

        ```
        [  
        {  
        "option": "Monday"  
        ,  
        "00000000-0000-4000-8000-0368f9a80495"  
        ,  
        "order": 1,  
        "votes": 0  
        },  
        {  
        "option": "Tuesday"  
        ,  
        "optionUuid":  
        "00000000-0000-4000-8000-036  
        8f9a80496"  
        ,  
        "order": 2,  
        "votes": 0  
        }  
        ]
        ```
      </td>
    </tr>

    <tr>
      <td>
        poll_close_timestamp
      </td>

      <td>
        Timestamp of when poll should end (if applicable), only available when event_type is 'management'
      </td>

      <td>
        Timestamp  
        '2020-10-13 13:28:06'
      </td>
    </tr>
  </tbody>
</Table>

# **Engage Time**

This file provides information about users time on site and time in comments.

Fields information

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>

      <th>
        Format
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        day
      </td>

      <td>
        Date of event
      </td>

      <td>
        Timestamp  
        '2020-10-13'
      </td>
    </tr>

    <tr>
      <td>
        site_name
      </td>

      <td>
        Name of the site (or property)
      </td>

      <td>
        String  
        ex. `https://www.somepage.com`
      </td>
    </tr>

    <tr>
      <td>
        actor_uuid
      </td>

      <td>
        ID of the user or actor who caused the interaction. This could be a User, a Moderator or an internal ID
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        view_uniqueid
      </td>

      <td>
        First party tracking cookie ID, unique identifier of the anonymous user who caused the interaction
      </td>

      <td>
        UUID (Universally unique  
        identifier)  
        ex. 00000000-0000-4000-8000-0368f9a80495
      </td>
    </tr>

    <tr>
      <td>
        time_on_page
      </td>

      <td>
        Time user spent on site (in milliseconds)
      </td>

      <td>
        Big Int  
        ex. 141192
      </td>
    </tr>

    <tr>
      <td>
        time_in_comments
      </td>

      <td>
        Time user spent in commenting  
        widgets (in milliseconds)
      </td>

      <td>
        Big Int  
        ex. 141192
      </td>
    </tr>
  </tbody>
</Table>

# **Entity Relationship Diagram**

The Entity Relationship Diagram (ERD) the files.

<Image align="center" src="https://files.readme.io/628aa2d798e0132330307d7c18b6702dfcf8367be2d5be8d93c3b31b3af0cb7c-Screenshot_2025-02-24_at_9.31.57_AM.png" />

# **Frequently Asked Questions**

**How can we resolve user id to email addresses?**

Both user\_id and actor\_uuid are internal to Viafoura. To map to users in your system, you can use username or third\_party\_id in user information files if available. We can also add a column for email address if required (sharing sensitive PII data should be avoided in most cases).

**How do I generate a public key for data access through SFTP?**

Please follow instructions in\
<https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#sshkeygen>.\
You need to share the public key with us and use the private key for data access.

**How do I read multi-line comments?**

The files we share are .csv files, so the file should be opened/read as .csv in order to be displayed or processed correctly. For example, you could open the file with Microsoft Excel, or programmatically read the file using CSV parsers.

**Why do old articles show up in recent container\_ids files?**

Clients need to add comments/conversations code on a page for it to appear (see\
<https://documentation.viafoura.com/docs/new-conversations#step-2-add-the-conversations-c>\
ode-to-your-page). Comment containers could be missing if the code has not been deployed on a page. Container creation for comments is purely controlled by the client and we capture container creation events instantly.

**Why do some actor\_uuid appear in comments content file but not in user\_information file on the same day?**

The files are created based on diﬀerent events as not all data fields are available in all the events, and they serve diﬀerent purposes. The user\_information file is only intended to provide additional user information such as username. If desired, one can create a table to store the latest user information per actor\_uuid from all historical user\_information files and use the table to look up user information.

**Why do some container\_uuid appear in comments\_content file but not in container\_ids file on the same day?**

The files are created based on diﬀerent events. Each day’s container\_ids file only contains information on newly created or updated containers. One should be able to find the container\_uuid if looking at all historical container\_ids files as a whole. For example, if a user created a comment on 11 October in a comment container created on 10 October, the container’s id would appear in the comments content file for 11 October and container\_ids file for 10 October.

**Why is there a diﬀerence between the number of comments from the file\
and the number on the website?**

This could be attributed to a few diﬀerent factors. First of all, it depends on how the number of comments is extracted from the files. Secondly, a comment could go through a few diﬀerent moderation processes and its visibility could change depending on both content status (created and awaiting moderation/visible/disabled/spammed/deleted) and user status (deleted/banned). User status could aﬀect the visibility of both the user’s comments and replies to these comments. It has never been considered in reporting the number of comments for analytics purposes as it could change with time and counting the number of comments\
created is enough as a measure of user engagement.