Custify is a next-generation Customer Success software for B2B SaaS companies. It helps you meet your customers' needs by reducing user churn and increasing their lifetime value. With Custify, you can get insights on product usage and all the data from your CRM, support, billing, and other systems in one place.

RudderStack supports Custify as a destination where you can seamlessly send your customer data.

Find the open source transformer code for this destination in the GitHub repository.

Getting started

Before configuring Custify as a destination in RudderStack, verify if the source platform is supported by Custify by referring to the table below:

Connection ModeWebMobileServer
Device mode---
Cloud modeSupportedSupportedSupported
To know more about the difference between cloud mode and device mode in RudderStack, refer to the RudderStack Connection Modes guide.

Once you have confirmed that the source platform supports sending events to Custify, follow these steps:

  1. From your RudderStack dashboard, add the source. Then, from the list of destinations, select Custify.
  2. Assign a name to the destination and click Continue.

Connection settings

To successfully configure Custify as a destination, you need to configure the following settings:

Custify connection settings
  • API Key: This is a mandatory field. Enter the Custify API key used to authenticate the request.
To create an API key, go to the Custify API Access page and click Generate API key.
  • Fall back to anonymousId if userId is not present: If this setting is enabled, RudderStack will use anonymousId to identify the user if userId is not present in the event.


You can use the identify call to create or update a user in Custify. RudderStack uses the userId or email field in the event's traits to do so. Hence, it is highly recommended to include the userId or at least the user's email in the identify call.

You can also identify your users with anonymousId in case userId is not present in the event via the Fall back to anonymousId if userId is not present dashboard setting.

A sample identify call is shown below:

rudderanalytics.identify("1hKOmRA4GRlm", {
name: "Alex Keener",
email: "",
country: "USA"

Supported mapping

RudderStack maps the following event properties to a subset of the standard Custify user attributes. It also creates a new custom field for the unmapped attributes.

RudderStack propertyCustify propertyPresence
userId (or anonymousId if userId is absent)user_idRequired / context.traits.emailemailRequired, if userId or anonymousId is absent. / context.traits.phonephoneOptional
traits.sessionCount / context.traits.sessionCountsession_countOptional
traits.unsubscribedFromEmails / context.traits.unsubscribedFromEmailsunsubscribed_from_emailsOptional
traits.unsubscribedFromCalls / context.traits.unsubscribedFromCallsunsubscribed_from_callsOptional / context.traits.namenameOptional
traits.signedUpAt / context.traits.signedUpAt / timestamp / originalTimestampsigned_up_atOptional
traits / context.traitscustom_attributesOptional

Removing users from an organization

To remove a given user from an organization, the following fields must be present in the event's context.traits:

  • company.remove (set to true)

RudderStack assumes a valid Custify company_id in the field. Then, it finds the organization corresponding to that ID and dissociates the user from the organization.

A sample identify call is shown below:

rudderanalytics.identify("1hKOmRA4GRlm", {
name: "Alex Keener",
email: "",
country: "USA",
company: {
id: "company_123",
remove: true

The above identify call updates the user as well as removes them from the company having the id as company_123.


RudderStack uses the Custify Events API to send the track events generated by the users' actions.

Custify expects a userId for every track call. You can set the userId by making an identify call before sending any track events.

A sample track call is shown below:

rudderanalytics.track("Order Completed", {
category: "category",
label: "label",
value: 120

Supported mapping

The following table lists the supported property mappings between RudderStack and Custify for the track events:

RudderStack propertyCustify property
userId / anonymousIduser_id
timestamp / originalTimestampcreated_at


You can use the group call to create or update a company in Custify and associate a user to it.

RudderStack assumes that an identify call (containing the userId) is made before any group call. It uses the groupId to uniquely identify a group.

A sample group call is shown below:"group01", {
traits: {
"name": "Tech Group",
"size": 150,
"plan": "Pro"
context: {
"traits": {
"name": "Alex Keener",
"email": ""

Supported mapping

RudderStack maps the following optional group traits to a subset of the standard Custify company attributes. It also creates a new custom field for any unmapped attributes.

RudderStack propertyCustify property
traits.sizesize / traits.urlwebsite
traits.monthlyRevenue / traits.mrrmonthly_revenue

How RudderStack does the user-organization association

To do the user-company association, RudderStack first finds the Custify user by looking for the userId present in the context.traits object.

  • If userId and groupId are present in the event, RudderStack associates the Custify user with the organization and sends all the user-specific information.
  • If userId and groupId are not present, RudderStack first creates the user and the organization in Custify and then does the association.

The above discussion can be summarized as follows:

userId present?groupId present?DescriptionExpected behavior
NoNoUser and the organization do not exist in Custify.RudderStack creates a new user and organization in Custify and associates both.
NoYesOrganization exists in Custify but not the user.RudderStack creates a new user and associates them with the organization.
YesNoUser exists in Custify but not the organization.RudderStack creates a new organization and associates the user with it.
YesYesBoth the user and the organization exist in CustifyRudderStack does the user-organization association.

Contact us

For more information on the topics covered on this page, email us or start a conversation in our Slack community.

On this page