Inside EventbriteSync 2.0 for Salesforce
CRM Science has been working closely with the Eventbrite team to deliver a second version of the EventbriteSync AppExchange App. If you’re not already familiar, Eventbrite Sync is a robust app that allows you to import your Eventbrite data into Salesforce.
Event Ticket Types
Order Buyer Details
Order Attendee Details
Order Ticket Details
Order Attendee Questions & Answers
Promotional and Discount Codes
Imports can be scheduled to recur daily. This gives an up-to-date picture of all your Events’ details in your Salesforce org, where you can use the platform’s standard features to build out custom reports and dashboards, workflows/process builder flows, and custom Apex around the data.
Version 1.0 of the App was a great starting point to begin understanding the demands of Salesforce and Eventbrite customers. Much of the feedback received has been incorporated into the new v2.0 of the app and there’s still more to come. I've taken time to record my favorite feature improvements.
Easy Import Mode - No Mapping Necessary!
Sometimes you just want to set it and forget it. Version 1.0 of the App had required you to map the incoming data from Eventbrite to your Salesforce objects. This meant that you always had to dive into the “Mapping Configuration” and decide if the default object mappings (IE: Eventbrite Events to Salesforce Campaigns, Eventbrite Orders to Salesforce Opportunities, etc) were right for you or if you wanted to target other objects. Then you had to determine which fields from Eventbrite got mapped to the fields on those objects.
Version 2.0 of the App has a new option for you, an easy “Import Only” mode that pulls in the Eventbrite data you want, into a set of Custom Objects that are included with the app. Now you don’t have to worry about the imported data mingling with your existing records. These Custom Objects are fully related to each other and are self-contained. The daily import will keep these Eventbrite Import objects’ record up to date, so you always have the latest information in Salesforce.
Once you have data in these objects, you can leverage the full power of the Salesforce platform to do whatever it is you need to do. Some examples include:
Build out analytics on your Eventbrite by creating reports and dashboards on this data
Add additional Custom Fields and incorporate it into your normal business logic
Let the data work for you by building out automation by using Workflow and Process Builder Flows
If you do anything more advanced by rolling your own Apex code and need help, shoot us an email.
Since the app leverages the Eventbrite API, as enhancements are made to the API, the app can occasionally benefit from these changes. If you’re familiar with the old v1.0 of the app, you know that each day, ALL of your Eventbrite data syncs for all Events. This worked fine for small-medium sized customers, but over time and for larger customers that have accumulated lots of data, syncing all the data isn’t so practical.
Enter delta syncs - delta syncs take advantage of a recent API update to import anything that’s new or updated, cutting down the overall time of your daily imports.
The above is scheduled to run daily at 3:00 AM and with “Delta Sync” enabled, when the job runs tonight, the import will only include anything new or updated in Eventbrite since 9/14/2016 at 3:00 AM - when the job last ran. This “Sync Changes Since” value will be updated each night to ensure that the scheduled job is pulling in the previous day’s information.
Fully Related Import Data
The new version of the app includes a lot of new data points from Eventbrite (300+) to map to your Salesforce fields. Not only is there more field level data to choose from, the objects imported to are now fully related to each other. Customers found it difficult to see the “whole picture” of their events, orders, and attendees. Now, with a few clicks, you can have full related lists on each object to see the child objects you’d expect to see in order to drill into those records’ details.
*Key relationships displayed; some have been omitted for clarity
The cornerstone of these relations is the new “Order Line Items” object. The data on the OLI gives you per-attendee insight into the individuals coming to your events. OLIs are parented by Orders as well as Events, and parent additional objects like Questions and Answers.
The relationships between all of the Salesforce objects you have Eventbrite data mapped to make it easy to build out even great reports and dashboards and a cinch for your orgs users to find the data they’d expect to see.
Flexibility Around Leads, Contacts, and Person Account (Where Enabled)
When we’re talking about people within the Eventbrite data, we’re routinely talking about the “buyers” - those visiting your Event’s page and making a purchase, and “attendees,” the individuals that the buyers can provide details for, for each of the tickets on their order.
Now individuals in the Salesforce sense can boil down to Leads, Contacts, and even Person Accounts (if that feature is enabled). Version 1.0 really worked best if your org worked solely with Contacts. In the real world, that’s not the case. You might use one, or the other, or a combination of all three.
The new version of the App allows you to do two really cool things when configuring how to import “Buyers” and “Attendees”:
Let’s say that John Smith, email@example.com, can be found in your org as a Lead record, as well as a Contact record, and for grins, for whatever reason also a Person Account record. If John Smith placed an order (making him the “buyer”) or was listed as one of the attendees on an order, the App will look across all three objects for record matches. But which one should be used? That’s where a new setting allows you to define your preferred priority order. You can define a priority that says to use Person Accounts, over Contacts, and Contacts over Leads.
A more real world example would be in a scenario where John Smith didn’t exist in your org at all. The import tool would create a record of whatever type you have specified as the “Target Salesforce Object” for Attendees.” Let’s say that was set to “Lead.” Now you have a John Smith Lead record.
Some time goes by and your sales team goes to work, nurturing that Lead until the day comes to convert that Lead record. Post-convers, now you have a converted Lead (which Salesforce prevents you from updating… and for good reason, a Contact, Account, and Opportunity.
John Smith loves your events and found himself on another Eventbrite Order. This time when the app imports the data, the tool needs to make a decision as it found both your original John Smith Lead record and the newly converted John Smith Contact record.
That’s where this new setting comes into play - it would let you tell the app to use the Contact match first, if there is one, and if not, use the Lead match.
Field Mappings by Type
So the above is very helpful, but now you’re in a scenario where the App might be creating/updating a Lead, or a Contact, or even a Person Account. Depending on the matches found and how you have your “Match Priority” configured, you probably want to update different fields if the record is a Contact vs the fields you’d want updated if the match were a Lead or a Person Account.
A new section in the “Mapping Configuration” page, displayed when you’re mapping “Buyers” or “Attendees” allows you to do this:
Updated Mapping Configuration Tool
Customer Salesforce orgs are like snowflakes; as they say, no two are same. How both Salesforce and Eventbrite are used vary from customer to customer, which makes creating a robust and flexible app extremely difficult. The new “Mapping Configuration” page is where the custom object and field mappings occur; aka - where you’d define things like “When I’m importing Eventbrite Events, I want to create/update Campaign records… and when I’m dealing with Eventbrite Orders, I want to create/update Opportunity records.
Because of how widely varying the customer use cases are, the “Mapping Configuration” page can be quite daunting. Anyone can use this page to update their field mappings to populate various data points, like Event Names or Order Amounts, to other Salesforce fields, more complex mapping requirements should be left to more experienced Salesforce admins.
Objects can be re-mapped to any out-of-the box Standard or Custom Objects and the fields for these objects can be mapped as desired. Where it gets tricky is maintaining the relationships between these objects. You should understand that:
Orders, Order Line items, Ticket Types all relate to an Event. Upon install, the default object is the Campaign object. This means that the Salesforce Objects used for Eventbrite Orders (default: Opportunity), Order Line Items (default: a Custom Object called “Order Line Items” and lovingly called “OLIs”), and Ticket Types (default: a Custom Object called “Ticket Types”) all have lookup fields, called “Event” (included in the app) to the Campaign object. The tricky part is, if you opt to use a Custom Object for Events, instead of the default Campaign object, you need to perform a few additional steps:
Create new Lookup fields on the Order, Order Line Items, and Ticket Types Salesforce Objects to point to the desired “Event” object - aka your Custom Object of choice.
Use the “Mapping Configuration” page for Orders, Order Line Items, and Ticket Types to update their “Event” mapping to point to your new field, instead of the old Campaign lookup.
That’s really the most difficult part of the page and fortunately is something that once you get set up, you won’t have to change.
As you can see, there have been countless improvements already and more are on the way! If you haven’t upgraded from an older version of the EventbriteSync app to the latest version, please do today! If upgrading from v1.0 to v2.0, see the documentation below, specifically the “Installation/Upgrade Notes” section.
AppExchange Link Documentation Link
CRM Science is excited to invite you to the 2nd annual Puzzle Party hosted by Eventbrite, October 6th, 5:30-9:00pm. We're looking forward to having a great time with you, solving puzzles, playing table tennis, and navigating a GIANT Jenga game or two. It's our goal to create a relaxed environment where people can hear each other talk, in a well lit comfortable space that is provided by Eventbrite Headquarters. We'll be handing out calendar cubes and Lab Coat stickers, as well as a few special giveaways! If you loved last year's party, invite a friend or co-worker- we'd love to meet them!
Attendance is first come, first serve. So come early!