Freshmarketer

Send your event data from RudderStack to Freshmarketer.

Freshmarketer is a Freshsales ecommerce CRM platform. It is a marketing automation tool that offers a unified marketing, sales, and CRM platform to engage your customer base and grow your business.

RudderStack supports Freshmarketer as a destination where you can seamlessly send your event data.

Connection compatibility

Destination info
  • Status: Generally Available
  • Supported sources: AMP , Android, Cordova, Cloud, Flutter, iOS , React Native , Unity, Warehouse, Web, Shopify
  • Refer to it as FRESHMARKETER in the Integrations object.

Connection modes
SourceCloud modeDevice modeHybrid mode
AMPsupportednot supportednot supported
Androidsupportednot supportednot supported
Cloudsupportednot supportednot supported
Cordovasupportednot supportednot supported
Fluttersupportednot supportednot supported
iOSsupportednot supportednot supported
React Nativesupportednot supportednot supported
Shopifysupportednot supportednot supported
Unitysupportednot supportednot supported
Warehousesupportednot supportednot supported
Websupportednot supportednot supported
Supported message types
SourceIdentifyPageTrackScreenGroupAlias
Cloud mode
Supported sourcessupportednot supportedsupportednot supportedsupportednot supported

Get started

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

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

Connection settings

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

Freshmarketer connection settings
  • API Key: Enter your Freshmarketer API key.
info
For more information on obtaining your Freshmarketer API key, refer to the FAQ section below.
  • Domain: Enter the full organization URL associated with your Freshsales account. For example, testcompany.myfreshworks.com.
info
For more information on your organization URL and how to change it, refer to this Freshmarketer support guide.
  • Map your events with Freshmarketer Standard Events: Use this setting to map the standard Freshmarketer events with the custom event names.

Identify

You can use the identify call to create or update your Freshmarketer contact.

RudderStack uses the Freshmarketer Upsert a Contact API to pass the relevant user information via the following parameters:

AttributeTypeDescription
unique_identifierStringRudderStack passes the user’s email.
contactHashed ObjectRudderStack passes the other relevant user details required to create or update the user in Freshmarketer.
info
If email already exists, the contact details are updated. Otherwise, RudderStack creates a new user in Freshmarketer.

A sample identify call is shown below:

rudderanalytics.identify("1hKOmRA4GRlm", {
  email: "alex@example.com",
  firstName: "Alex",
  lastName: "Keener",
  state: "Louisiana",
  country: "USA",
  postalCode: "90009",
});

The following table lists the mappings between the RudderStack and Freshmarketer properties:

RudderStack propertyFreshmarketer property
traits.email
context.traits.email
Required
emails
traits.firstname
traits.first_name
traits.firstName

context.traits.firstname
context.traits.first_name
context.traits.firstName
first_name
traits.lastname
traits.last_name
traits.lastName

context.traits.lastname
context.traits.last_name
context.traits.lastName
last_name
traits.subscriptionStatus
context.traits.subscriptionStatus
subscription_status
traits.job_title
traits.jobTitle
context.traits.job_title
context.traits.jobTitle
job_title
traits.phone
context.traits.phone
work_number
userIdexternal_id
traits.mobileNumber
context.traits.mobileNumber
mobile_number
traits.address
context.traits.address
address
traits.address.city
traits.city
context.traits.address.city
context.traits.city
city
traits.address.state
traits.state
context.traits.address.state
context.traits.state
state
traits.address.postalCode
traits.zip
traits.zipcode
context.traits.zip
context.traits.zipcode
context.traits.address.postalCode
zipcode
traits.address.country
traits.country
context.traits.address.country
context.traits.country
country
traits.salesAccounts
context.traits.salesAccounts
sales_accounts
traits.territoryId
context.traits.territoryId
territory_id
traits.leadSourceId
context.traits.leadSourceId
lead_source_id
traits.ownerId
context.traits.ownerId
owner_id
traits.subscriptionTypes
context.traits.subscriptionTypes
subscription_types
traits.medium
context.traits.medium
medium
traits.campaignId
traits.campaign_id
context.traits.campaignId
context.traits.campaign_id
context.campaign.name
campaign_id
traits.keyword
context.traits.keyword
context.campaign.term
keyword
traits.timeZone
context.traits.timeZone
time_zone
traits.facebookUserName
context.traits.facebookUserName
facebook
traits.twitterUserName
context.traits.twitterUserName
twitter
traits.linkedinUserName
context.traits.linkedinUserName
linkedin
createdAtcreated_at
timestampupdated_at
traits.contactStatusId
context.traits.contactStatusId
contact_status_id
traits.salesAccountId
context.traits.salesAccountId
sales_account_id
traits.lifecycleStageId
context.traits.lifecycleStageId
lifecycle_stage_id

Track

You can use the RudderStack track call to track the user activities in Freshmarketer.

info
To make a track call successfully, you must map the event to be sent in the track call in the Map your events with Freshmarketer Standard Events dashboard setting.

RudderStack supports the following track events:

Lifecycle stage

Lifecycle stage events capture the decision journey of a customer. Refer to the Freshsales documentation to create lifecycle stages in Freshmarketer.

RudderStack lets you update the status of a contact in their lifecycle stage by using either the lifecycleStageId or lifecycleStageName.

info
lifecycleStageName is a case-sensitive field and throws an error if not used in the intended manner.

A sample track call for a lifecycle stage event is shown below:

rudderanalytics.track("eventName", {
  email: "alex@example.com",
  lifecycleStageId: 71010794467,
  phone: "+1-202-555-0146",
  owner_id: "70000090119",
});

The following table lists the property mappings betweeen RudderStack and Freshmarketer for lifecycle stage events:

RudderStack propertyFreshmarketer property
email
Required
email
lifecycleStageName
Required, if lifecycleStageId is absent.
lifecycleStageName
lifecycleStageId
Required, if lifecycleStageName is absent.
lifecycle_stage_id

Sales activities

Sales activities events can be used to track any activity related to a contact/deal/account. Refer to the Freshsales documentation to create sales activities in Freshmarketer.

RudderStack lets you create the status of a contact by using either the salesActivityTypeId or salesActivityName.

A sample track call for a sales activity event is shown below:

rudderanalytics.track("eventName", {
  salesActivityTypeId: "70000663932",
  title: "new contact",
  startDate: "2021-05-04T17:00:00+05:30",
  endDate: "2022-06-04T17:30:00+05:30",targetable_type
  ownerId: "70054866612",
});

The following table lists the property mappings betweeen RudderStack and Freshmarketer for sales activity events:

RudderStack propertyFreshmarketer property
properties.title
Required
title
properties.salesActivityName
Required, if properties.salesActivityTypeId is absent.
sales_activity_name
properties.salesActivityTypeId
Required, if properties.salesActivityName is absent.
sales_activity_type_id
properties.startDate
Required
start_date
properties.endDate
Required
end_date
context.externalId.type
Required
targetable_type
properties.ownerId
Required
owner_id
salesActivityOutcomeIdsales_activity_outcome_id
properties.notesnotes
context.externalId.idtargetable_id
properties.createrIdcreater_id
originalTimestampcreated_at
timestampupdated_at
properties.locationlocation
latitude
context.address.latitude
context.location.latitude
latitude
longitude
context.address.longitude
context.location.longitude
longitude
properties.checkedinAtcheckedin_at
info
The targetable_type field denotes the entity for which the sales activity has been created and can take Contact/SalesAccount/Deal as its value. However, if its value is set to contact, then either the targetable_id or email is required.

Group

The group call lets you link an identified Freshmarketer contact with a company, organization, or an account. You can also record any custom group traits like the company name, number of employees, etc.

info
To make a group call successfully, you must pass the groupType field with value as accounts or marketing_lists.

Accounts

RudderStack uses the Upsert an Account API to create or update a sales account via the following parameters:

AttributeTypeDescription
unique_identifierStringRudderStack passes the account name.
sales_accountHashed ObjectRudderStack passes the other relevant details associated with the Freshmarketer account.
info

Note that:

  • If name already exists, RudderStack updates the Freshmarketer account details. Otherwise, it creates a new account in Freshmarketer.
  • RudderStack also checks if the contact’s email is present in the context.traits object. If yes, RudderStack links the contact to the Freshmarketer account.

A sample group call is shown below:

rudderanalytics.group(
  "group01", {
    groupType: "accounts",
    name: "Alex Keener",
    phone: "1234567890",
    numberOfEmployees: 51,
    annualRevenue: 10000,
    zipcode: 90009,
    street: "6649 N Blue Gum Street",
    city: "New Orleans",
    state: "Louisiana",
    country: "USA"
  }, {
    context: {
      traits: {
        email: "alex@example.com"
      }
    }
  }
);

The following table lists the mappings between the RudderStack and Freshmarketer properties to create or update an account:

RudderStack propertyFreshmarketer property
name
Required
name
traits.industryTypeId
context.traits.industryTypeId
industry_type_id
traits.businessTypeId
context.traits.businessTypeId
traits.business_type_id
context.traits.business_type_id
business_type_id
phonephone
traits.numberOfEmployees
context.traits.numberOfEmployees
number_of_employees
traits.annualRevenue
context.traits.annualRevenue
annual_revenue
traits.address
context.traits.address
address
traits.city
traits.address.city
context.traits.city
context.traits.address.city
city
traits.state
traits.address.state
context.traits.state
context.traits.address.state
state
traits.country
traits.address.country
context.traits.country
context.traits.address.country
country
zipcodezipcode
traits.website
context.traits.website
website
traits.territoryId
context.traits.territoryId
territory_id
traits.parentSalesAccountid
context.traits.parentSalesAccountid
parent_sales_account_id
traits.ownerId
context.traits.ownerId
ownerId
traits.facebookUserName
context.traits.facebookUserName
facebook
traits.twitterUserName
context.traits.twitterUserName
twitter
traits.linkedinUserName
context.traits.linkedinUserName
linkedin
createdAtcreated_at
timestampupdated_at

Marketing lists

Marketing lists help you group contacts into lists which you can quickly invoke for marketing campaigns and bulk emailing.

RudderStack lets you add one or more contacts to a specified marketing list. To do so, you need to provide the contact’s email and listId/listName. Also, RudderStack creates a new marketing list if the listName (case-sensitive) does not exist already.

A sample group call to add a contact to a marketing list is shown below:

rudderanalytics.group("group01", {
  groupType: "marketing_lists",
  email: "alex@example.com",
  listName: "listIdX123",
});

The following table lists the property mappings between RudderStack and Freshmarketer to create marketing lists:

RudderStack propertyFreshmarketer property
email
Required
email
listId
Required, if listName is absent.
listId
listName
Required, if listId is absent.
listName

Type conversion and invalid format error

The following event properties accept only the number data type:

  • territoryId
  • leadSourceId
  • ownerId
  • campaignId
  • contactStatusId
  • lifecycleStageId
  • industryTypeId
  • businessTypeId
  • numberOfEmployees
  • parentSalesAccountid

If any of the above properties are present in any identify or group call in a different format, RudderStack will try to convert them into the number data type. If the type conversion is unsuccessful, RudderStack will give an “invalid format” error.

FAQ

Where can I find the Freshmarketer API key?

To obtain your Freshmarketer API key, follow these steps:

  1. Log into your Freshmarketer dashboard.
  2. Go to Personal Settings > API Settings.
  3. Enable the captcha to complete the authentication process.
  4. You will find your Freshmarketer API key listed under the API Authentication section:
Freshmarketer API key
info
For more information, refer to this Freshmarketer support guide.

Questions? Contact us by email or on Slack