Amity’s Salesforce integration synchronizes data in Salesforce accounts, cases, contacts, opportunities, and opportunity line items with Amity accounts, tickets, people, and subscriptions.
Given that Salesforce is a very flexible platform, Amity's integration can support custom fields. As part of our on-boarding process, your Amity customer success manager will work with you to identify any custom fields need to be synchronized.
Amity supports both unidirectional and bidirectional Salesforce synchronization.
Once enabled, the synchronization occurs every hour.
Your organization must have a Salesforce subscription that includes API access. This feature is enabled by default in the following editions:
- Enterprise Edition
- Unlimited Edition
- Developer Edition
- Performance Edition
For other editions, the API feature may be available for an additional cost. Please contact your Salesforce account representative for more details.
Before Amity can enable Salesforce integration, you must provide the following user credentials:
- Security Token
This user must be granted the “API Enabled” permission. Follow the instructions in User Permissions.
If you need to reset your security token, follow the instructions in Reset Your Security Token.
By default, Amity will synchronize ONLY Salesforce accounts that have the custom checkbox field "Amity Sync" checked (more detail steps on how to create the Amity Sync account custom field are described in the attached "Create Amity Sync account custom field" documentation). All other accounts will be ignored. It is possible to use extensions to define custom configurations.
Deleted Salesforce accounts will not be synchronized.
If a Salesforce account is deleted after it has been synchronized with Amity, the Amity account will not be deleted.
If you are previously using the Account Type value of "Customer" as the synchronization indicator, you can migrate to custom checkbox field "Amity Sync" using a custom formula field. The details steps are described in the attached "Create Amity Sync account formula field" documentation.
If you would like to massively update the Amity Sync account custom field you have created for the existing accounts based on specified condition (e.g. accounts that have a Closed Won opportunity), there are various methods to automate the process. You can perform the update via a created workflow (the details steps are described in the attached "Create a workflow rule to set Amity Sync" documentation) or via CSV file import (the detail steps are described in the attached "Update Amity Sync field in multiple accounts" documentation).
By default, Amity will synchronize all Salesforce contacts that are associated with synchronized Salesforce accounts.
Deleted Salesforce contacts will not be synchronized.
If a Salesforce contact is deleted after it has been synchronized with Amity, the participant in Amity will not be deleted.
If a Salesforce contact has been synchronized and then the associated account is removed, Amity will continue to synchronize the Salesforce contact.
Amity will not synchronize an email address that is malformed.
By default, Amity will synchronize all Salesforce cases that are associated with synchronized Salesforce contacts.
Deleted Salesforce cases will not be synchronized.
If a Salesforce case is deleted after it has been synchronized with Amity, the Amity ticket will not be deleted.
If a Salesforce case has been synchronized and then the associated contact is removed, Amity will continue to synchronize the Salesforce case.
Companies that have recurring revenue business models often need to track and manage subscriptions for offerings that have one-time, recurring, and usage fees.
Unfortunately, Salesforce do not provide any native support for these requirements.
Unlike accounts and contact, there is no built-in subscription object in the Salesforce data model. Likewise, the support for products with recurring fees is limited. There is no support for metered usage-based pricing.
Nevertheless, Amity often encounters companies that have attempted to “bolt on” subscription management by making customizations to their Salesforce instance.
To help support these companies, Amity has developed a capability that can import Salesforce opportunity line items into Amity subscriptions. This reference implementation avoids introducing customizations. Instead, it uses existing Salesforce features.
Reference Implementation Details
When enabled, Amity will import and synchronize Salesforce opportunity line items as Amity Subscription objects.
Amity will only synchronize line items that belong to opportunities that are closed and won (commonly called the “Closed Won” stage). The opportunities must be associated with an account that Amity has synchronized.
Deleted Salesforce opportunities will not be synchronized. Likewise, deleted Salesforce opportunity line items will not be synchronized.
To distinguish one-time fee products from recurring fee products, Amity uses Salesforce’s revenue scheduling feature. Amity does not support custom revenue schedules that are unique to a opportunity line item.
If the Salesforce opportunity is deleted or the stages changes to something that is not closed and won, all of the associated Amity subscriptions will be deleted. Likewise, if a line item is removed from the opportunity, the corresponding Amity subscription will be deleted.
The Reference Implementation does not support subscription cancellations, amendments or annulments. Specifically, the value of the Subscription disposition field indicates when a subscription has expired or is is cancelled, amended, or annulled. The Reference Implementation will only set the disposition field to expired. Without introducing Salesforce customizations, there is no way to inform the integration that a subscription has been cancelled, amended or annulled.
The Reference Implementation does not support usage-based pricing.
Custom extensions provide a mechanism allow Amity’s Salesforce integration to be customized for a client’s particular needs.
Object and Field Mapping
|Amity Account||Salesforce Account|
BillingCity, BillingCountry, BillingPostalCode, BillingState, BillingStreet
ShippingCity, ShippingCountry, ShippingPostalCode, ShippingState, ShippingStreet
|email_domains||Domain extracted from Website field|
|Amity Participant||Salesforce Contact|
|telephones||Fax, HomePhone, MobilePhone, OtherPhone, Phone|
MailingStreet, MailingCity, MailingState, MailingPostalCode, MailingCountry
OtherStreet, OtherCity, OtherState, OtherPostalCode, OtherCountry
|start||OpportunityLineItem.ServiceDate. If the service date is not specified, the Opportunity.CloseDate is used.|
If the opportunity line item has a revenue schedule then the end data is a date offset from the start date that is calculated using the values of Product2.NumberOfRevenueInstallments and Product2.RevenueInstallmentPeriod
Otherwise, the value is not set.
The disposition is set to “expired” if the current date and time is after the subscription end.
Otherwise, the value is not set.
If the Salesforce instance has revenue scheduling enabled and the opportunity line item does not have a revenue schedule, this attribute is be sourced from OpportunityLineItem.UnitPrice.
Otherwise, the value is always zero.
If the Salesforce instance has revenue scheduling enabled and the opportunity line item does not have a revenue schedule, the value is zero.
Otherwise, the value is sourced from OpportunityLineItem.UnitPrice.
Note: If there is a revenue schedule associated with the opportunity line item, the recurring amount is calculated by dividing OpportunityLineItem.UnitPrice by Product2.NumberOfRevenueInstallments.
If revenue scheduling is not enabled in the Salesforce instance, the billing period value is determined by the Business Workspace account value metric. If the metric is “MRR”, the billing period is “month”. If the metric is “ACV”, the billing period is “year”.
If revenue scheduling is enabled and the opportunity line item has a revenue schedule, this attribute is sourced from OpportunityLineItem.RevenueInstallmentPeriod.
Otherwise, this value is not set.
|Amity Ticket||Salesforce Case|
|resolution_calendar_time||Time difference between created_at and resolved_at|