Vitally has a variety of ways to sync the data we track about your customers back into your other tools. This helps you to further automate your Customer Success efforts outside of Vitally, giving you access to our data in your current customer support and engagement tools.

Tools supported

Segment
If you are a Segment customer, you can configure Vitally to send our data back to Segment for distribution to other destinations supported in Segment.

Learn more about pushing data back to Segment.

Intercom
If you are an Intercom customer, you can configure Vitally to sync our data back to your Intercom customers as custom_attributes.

Learn more about pushing data back to Intercom.

Webhooks
Vitally can also post updated customer data to any webhook, giving you complete control over how you leverage our data. 

To setup a webhook as a data-out integration, please contact us at support@vitally.io.

How/when we decide to send updated customer data

Vitally sends updated customer data to your configured destination(s) on a recurring interval. This interval is either every one, three, or six hours depending on your account's plan. 

Additionally, we only push data to your configured destination(s) if either 1) we've yet to push data about the customer to the destination or 2) some data about the customer has changed since the last data push. 

For example, let's say your account has a data update frequency of every 3 hours. Then, at (roughly) 12AM, 3AM, 6AM, etc, we'll:

  • Fetch all your tracked accounts that have never been pushed to the configured destination.
  • Combine those accounts with any accounts that have updated data since the last push to the configured destination.
  • Push updated data for each account to your configured destination(s).

The account data we push to your data-out destination(s)

We push the below data to your configured destinations. Note that how this data gets attached to the accounts in your destination varies depending on the tool (we usually prefix each trait with vitally to help you identify our traits in Segment, Intercom, etc). Please see the article for the destination you are pushing to for more details.

  • id
    • Type: string
    • Summary: The ID of this account in Vitally
  • externalId
    • Type: string
    • Summary: Your configured ID for the account
  • name
    • Type: string
    • Summary: The account's name
  • type
    • Type: enum(subscribed, trial, unqualified-trial)
    • Summary: The state of this account in the subscription lifecycle
  • createdAt
    • Type: date
    • Summary: The time this account was created in Vitally
  • churnedAt
    • Type: date | null
    • Summary: The time this account was churned in Vitally. If type is subscribed, this account is considered churned. If type is trial, this account is counted as an unconverted trial
  • firstSeenTimestamp
    • Type: date | null
    • Summary: The timestamp of the first product event for this account
  • lastSeenTimestamp
    • Type: date | null
    • Summary: The timestamp of the most recent product event for this account
  • activeUserPercent
    • Type: number (Between 0 and 1)
    • Summary: The percent of the account's users that have logged a product event in the past 30 days
  • renewalStatus
    • Type: enum(new, in_state, near_period_end, past_due, canceled, unknown)
    • Summary: A description of this account's status within their trial or current billing period, depending on type
  • mrr
    • Type: number | null
    • Summary: The monthly recurring revenue for this account
  • nextRenewalDate
    • Type: date | null
    • Summary: The next date that this account's subscription will renew
  • trialEndDate
    • Type: date | null
    • Summary: The date that the account's trial will end (or did end)
  • firstPaidDate
    • Type: date | null
    • Summary: The date that a paying customer first started paying you (i.e. the date their first subscription started)
  • usersCount
    • Type: number
    • Summary: The number of users for this account in Vitally
  • csm
    • Type: A Vitally account (object) | null
    • Summary: If you've assigned a team member to be the CSM of the account, we will include that team member's name and email here in an object (see below for an example).
  • activeRiskIndicatorCount
    • Type: number
    • Summary: The total number of risk indicators currently active at this account
  • activeOpportunityIndicatorCount
    • Type: number
    • Summary: The total number of risk indicators currently active at this account
  • currentSuccessMetricValues
    • Type: hash<string, number>
    • Summary: A hash containing the current values of this account's Success Metrics, keyed by the Success Metric name
  • currentElementCounts
    • Type: hash<string, number>
    • Summary: A hash containing the current counts of this account's Elements, keyed by the Element name
  • activeRiskIndicators
    • Type: hash<string, date>
    • Summary: A hash containing the date that each active risk indicator started, keyed by the Indicator name
  • activeOpportunityIndicators
    • Type: hash<string, date>
    • Summary: A hash containing the date that each active opportunity indicator started, keyed by the Indicator name
  • owner
    • Type: A user (object) | null
    • Summary: If a user at the account has been identified as the account's owner, we will include that user here (see below for an example).
  • segments
    • Type: array<string>
    • Summary: If the account is in any segments, we will include an array of those segment names here.

Note: all date fields are represented as a full ISO8601 datetime in the UTC timezone: YYYY-MM-DDTHH:MM:SS.sssZ

Example traits (prefixed with vitally., which is a format used for Segment)
{
  "vitally.id": "0283c0ab-952a-4c69-9b21-a844d37393e3",
  "vitally.externalId": "your_id_12345",
  "vitally.name": "Apple",
  "vitally.type": "subscribed",
  "vitally.createdAt": "2018-06-01T14:05:26.559Z",
  "vitally.firstSeenTimestamp": "2018-06-01T14:45:23.621Z",
  "vitally.lastSeenTimestamp": "2018-08-17T14:05:26.559Z",
  "vitally.activeUserPercent": .9,
  "vitally.renewalStatus": "near_period_end",
  "vitally.mrr": 250,
  "vitally.nextRenewalDate": "2018-08-19T12:00:00.000Z",
  "vitally.trialEndDate": null,
  "vitally.firstPaidDate": "2018-07-19T12:00:00.000Z",
  "vitally.usersCount": 10,
  "vitally.csm": {
    "email": "richard@piedpiper.com",
    "name": "Richard Hendricks",
    "firstName": "Richard",
    "lastName": "Hendricks",
    "id": "1281c0ab-552a-4d68-9a21-a544e36394f2"
  },
  "vitally.owner": {
    "email": "sally@fields.com",
    "name": "Sally Fields",
    "id": "2250c3ab-542b-4a69-3x21-a641f36291a8",
    "createdAt": "2018-06-01T14:05:26.559Z",
    "externalId": "your_id_12345"
  },
  "vitally.activeRiskIndicatorCount": 2,
  "vitally.activeOpportunityIndicatorCount": 1,
  "vitally.currentSuccessMetricValues": { 
    "Percent of Users Creating Tasks": .4,
    "Percent of Users Completing Tasks": .6
  },
  "vitally.currentElementCounts": {
    "Slack Integration": 1,
    "Zapier Integration": 0,
    "Projects Created": 7
  },
  "vitally.activeRiskIndicators": {
    "Too many open support tickets":  "2018-08-15T19:00:00.000Z",
    "Disabled Zapier integration":  "2018-08-10T19:00:00.000Z"
  },
  "vitally.activeOpportunityIndicators": {
    "Spike in new users": "2018-08-11T19:00:00.000Z"
  },
  "vitally.segments": ["B2B", "Low user engagement"]
}