Eventbrite sync documentation
-
Upload
dylan-serota -
Category
Documents
-
view
90 -
download
1
Transcript of Eventbrite sync documentation
Table&of&Contents&&&Introduction&! Feature!Overview!
! Requirements!
! !
Getting&Started&! Installation!Instructions!
! Authentication!
! Default!Configuration!
! !
Configuration&Sync!Configuration!
Advanced!Mapping!
! ! Object!Mapping!
Field!Mapping!
! ! Filters!
! ! Record!Type!
! ! Enabled!
! ! Static!Mapping!
! ! Question!Mapping!
! !
Sync&& Syncing!
& Sync!Status&& Scheduled!Sync&& Single!Event!Sync!
! Integration!Logs!
!
Additional&Features&! Custom!Questions!and!Answers!
! Ticket!Types!
! Promo!Codes!
! ! Discount!Codes!
! ! Access!Codes!
! Contact!Lists!
! ! !
!
!
!
!
!
!
!
!
Introduction&! !
Thank!you!for!downloading!EventbriteSync,!your!Eventbrite!to!Salesforce.com!
connector.!Our!goal!is!for!you!to!use!Salesforce.com!to!get!the!most!out!of!your!
Eventbrite!data.!We!hope!that!you!will!find!this!guide!helpful!when!setting!up!and!
configuring!the!connector.!!
!
!
Feature&Overview&! !
!
Sync&&At!the!heart!of!the!EventbriteSync!connector!is!the!Sync.!A!sync!is!an!action!that!is!performed!that!imports!over!all!your!Event,!Order,!and!Attendee!data!from!your!Eventbrite!account!into!your!Salesforce!org.!!
!
KThe!sync!is!on>demand,!meaning!you!can!click!a!button!to!initiate!a!sync.!The!operation!will!proceed!in!the!background!and!you!are!free!to!continue!with!the!
rest!of!your!work!while!it!finishes.!
KThere!is!also!a!scheduled!sync.!This!allows!you!to!set!a!sync!to!recur!daily!at!a!specified!time.!
KYou!also!have!the!option!to!perform!a!single!event!sync.!This!will!get!the!latest!Event!data!for!a!particular!event!you!have!created!in!Salesforce!rather!than!the!
entire!system.!
KThe!sync!inserts!new!records!and!updates!existing!ones!appropriately,!so!you!do!
not!have!to!worry!about!duplicate!records!being!created!by!this!process.!!
KThe!sync!is!highly!configurable!through!custom!mapping.!KYou!choose!what!data!you!want!and!don’t!want.!For!instance,!you!can!choose!to!
enable/disable!creation!of!Eventbrite!Order!records!in!Salesforce.!!KYou!can!add!filters!so!that!you!only!import!data!meeting!certain!criteria.!For!instance,!you!may!only!want!to!import!Eventbrite!Order!records!as!Salesforce!
Opportunities!if!they!were!paid,!rather!than!free!tickets.!!
!
Mapping&&& The!brain!of!the!operation!is!the!mapping.&This!determines!what!objects!will!get!created!and!what!fields!will!contain!the!data!from!Eventbrite.!You!have!a!high!
degree!of!flexibility!here!to!map!your!incoming!data!from!Eventbrite!to!Salesforce!
objects!and!fields!of!your!choosing.!!
!
K!For!instance,!Eventbrite!Events!are!by!default!mapped&to!the!Campaign!object!in!Salesforce.!This!means!that!Events!will!be!created!with!all!their!associated!
Eventbrite!data!as!Campaign!records!in!Salesforce.!You!can!instead!choose!to!map!
Events!to!a!standard!or!custom!object.!!
KYou!choose!what!fields!to!hold!your!Eventbrite!data.!For!instance,!you!can!map!
the!amount!of!an!Eventbrite!Order!to!any!field,!standard!or!custom,!with!which!
you!typically!conduct!reporting!in!Salesforce!
!
!
Requirements&&Eventbrite&You!need!to!have!an!account!in!Eventbrite!from!which!you!would!like!to!import!data!
into!Salesforce.!This!account!will!be!associated!with!your!Salesforce!org!during!
installation,!and!must!be!authenticated!before!a!sync!can!be!performed.!This!would!
require!the!authenticating!user!to!be!able!to!log!in!to!Eventbrite,!and!only!needs!to!
be!performed!once.!!
!
Salesforce&Edition&In!order!to!install!the!EventbriteSync!connector,!you!need!to!have!one!of!the!
following!editions!of!Salesforce:!Professional,!Enterprise,!Performance,!Unlimited,!
and!NonKProfit.!In!case!of!any!doubts,!you!can!attempt!an!installation!and!you!will!
be!notified!if!your!org!does!not!support!the!package.!!
!
Note!to!Salesforce!Professional!Edition!users:!!
In!order!for!a!custom!field!to!be!mappable!and!show!up!in!the!mapping!picklists,!the!
field!must!be!added!to!the!object’s!page!layout.!This!includes!fields!included!in!the!
package,!such!as!EventbriteSync__Eventbrite_Id__c!and!EventbriteSync__Buyer__c.& !
Salesforce&Objects&At!a!minimum,!the!following!standard!objects!are!required!to!complete!an!
installation:!Campaign,!Campaign!Member,!Opportunity,!Contact,!and!Lead.!
!
“Customize&Application”&Permission&In!order!to!make!configuration!changes,!the!user!needs!to!have!the!“Customize!
Application”!Salesforce!permission.!If!a!user!lacks!this!permission,!they!may!still!
perform!syncs,!but!will!be!unable!to!make!sync!configuration!and!mapping!changes.!
!
Events&with&Parent&Objects&!
Do!you!have!a!setup!in!Salesforce!where!your!events!have!parent!records!that!are!
not!found!in!Eventbrite?!Consider!this!example:!You!have!a!band!that!has!individual!
performances,!and!you!manage!each!performance!in!Eventbrite.!In!Salesforce,!you!
then!have!one!band!record!per!band,!and!it!has!many!child!records!(performances)!
that!correspond!to!each!Eventbrite!Event.!!In!this!scenario!you!would!want!the!
Eventbrite!Events!to!map!to!performances!in!Salesforce,!but!if!they!are!in!a!masterK
detail!relationship!with!bands,!you!would!also!need!to!establish!that!relationship!
during!the!sync!for!the!performance!records!to!be!created.!Since!information!
regarding!that!relationship!is!unknown!to!Eventbrite,!some!custom!code!will!need!
to!be!created!in!your!Salesforce!org!to!allow!this.!!!
!
If!you!require!the!sync!to!make!the!association!of!imported!Eventbrite!Events!to!
appropriate!parents!during!the!sync,!please!contact!Eventbrite!to!discuss!
development!of!custom!code!that!will!implement!your!desired!logic.!!However,!if!
implementation!of!that!logic!is!not!necessary,!there!is!another!option.!The!following!
code!will!allow!your!child!records!to!be!created!in!Salesforce!and!will!be!associated!
to!a!default!parent!record.!This!will!allow!a!user!to!go!back!and!correctly!assign!the!
child!records!to!the!appropriate!parents!as!necessary.!!!
!
Trigger!that!assigns!a!default!master!record!for!incoming!events!
trigger!DefaultMasterTrigger!on!Child__c!(before!insert)!{!
! //!Establish!a!default!master!record!
!!!!List<Master__c>!defaultMasterList!=![SELECT!Id!FROM!Master__c!WHERE!Name!=!
'Default!Record'];!!
!!!!Master__c!defaultMaster;!
!!!!!
!!!!//!Create!default!master!if!not!already!created!
!!!!if!(defaultMasterList.isEmpty()){!
!!!!!!!!defaultMaster!=!new!Master__c();!
!!!!!!!!defaultMaster.Name!=!'Default!Record';!
!!!!!!!!insert!defaultMaster;!
!!!!}!else!
!!!!!!!!defaultMaster!=!defaultMasterList[0];!
!!!!!
!!!!//!Assign!child!records!to!default!record!
!!!!for!(Child__c!p!:!trigger.New){!
!!!!!!!!if!(p.Master_Lookup__c!!==!null)!
!!!!!!!!!!!!p.Master_Lookup__c!=!defaultMaster.Id;!
!!!!}!
}!
!
!
Replace!the!Child__c!with!the!object!that!is!mapped!to!an!individual!Eventbrite!
Event,!and!Master__c!with!the!object!that!is!the!master!object!of!Child__c.!Then!
replace!Master_Lookup__c!with!the!field!on!the!child!object!that!creates!the!
relationship!with!the!Master__c!object.!!
!
The!test!class!for!the!above!trigger!is!found!below!(on!the!next!page):!
!
!
!
!
!
!
Test!class!for!default!master!trigger!
@isTest!
private!class!TestDefaultMasterTrigger!{!
! public!static!testMethod!void!testTrigger()!{!
!!!!! //!insert!child!record!
!!!!! Child__c!child1!=!New!Child__c(Name='Test!Child');!
!!!!!!!!insert!child1;!
!!!!!!!!!
!!!!!!!!//!assert!that!master!record!was!created!
!!!!!!!!List<Master__c>!!defaultMasterList!=![SELECT!Id!FROM!Master__c!WHERE!Name!
=!'Default!Record'];!!
!!!!!!!!System.assertEquals(1,!defaultMasterList.size(),!'Default!Master!Record!failed!to!
create.');!
!!!!!!!!!
!!!!!!!!//!assert!that!child1!is!linked!to!master!record!
!!!!!!!!child1!=![SELECT!Master_Lookup__c!FROM!Child__c!WHERE!Name!=!'Test!
Child'];!
!!!!!!!!System.assertEquals(defaultMasterList[0].Id,!child1.Master_Lookup__c,!'Default!
Master!not!assigned!to!child');!
!!!!!!!!!
!!!!!!!!//!assert!another!child!record!will!be!assigned!to!default!
!!!!! Child__c!child2!=!New!Child__c(Name='Test!Child!2');!
!!!!!!!!insert!child2;!
!!!!!!!!child2!=![SELECT!Master_Lookup__c!FROM!Child__c!WHERE!Name!=!'Test!Child!
2'];!
!!!!!!!!System.assertEquals(defaultMasterList[0].Id,!child2.Master_Lookup__c,!'Default!
Master!not!assigned!to!child');!
!!!!}!
}!
Getting&Started!&& &Installation&Instructions&& &
1. Log!into!the!Salesforce!org!in!which!you!want!the!EventbriteSync!connector!to!be!installed.!
2. Click!on!the!link!to!the!package!provided!to!you.!It!should!look!something!like!this:&https://login.salesforce.com/packaging/installPackage.apexp?p0=alphanumericpackageId
3. You!will!be!presented!with!the!Package!Installation!Details.!Press!the!orange!‘Continue’!button!to!proceed!with!installation!
4. An!“Approve!ThirdKParty!Access”!popup!will!appear.!This!allows!the!connector!to!communicate!with!Eventbrite!and!is!required!to!proceed!
with!installation.!Click!‘Yes,!grant!access!to!these!thirdKparty!web!sites’!
and!then!click!‘Continue’.!
5. You!will!be!presented!with!package!API!Access!details.!Scroll!down!and!click!‘Next’!to!proceed.!
6. Choose!security!level:!you!may!limit!(by!profile)!who!can!use!this!package,!or!allow!all!users!access!to!it.!Click!‘Next’!after!making!a!
selection.!
7. Click!‘Install’!on!the!final!‘Step!3.!Install!Package’!screen!to!initialize!installation!of!the!package.!This!may!take!several!minutes!or!longer,!but!!
the!operation!will!proceed!in!the!background!and!you!are!free!to!continue!
working.!You!will!receive!an!email!when!the!installation!is!complete.!!
8. To!verify!a!complete!installation,!go!to!your!Salesforce!setup!screen,!under!‘App!Setup’!click!‘Installed!Packages’,!and!look!for!the!‘Eventbrite’!
package.!
Authentication&&1.&Go!to!the!Eventbrite!app:!&&
&&&& &&&&&&&&&&&&& &&
2.&You!should!be!taken!to!the!“Eventbrite!Config”!tab!by!default.!This!is!where!you!will!perform!authentication!and!have!the!ability!to!make!configuration!changes,!as!
well!as!initiate!syncs.!!
!
!
3.!!Click!the!‘Authenticate’!button!to!begin!the!authentication!process.!
!
!
!
4.!You!will!be!redirected!to!Eventbrite.com.!If!you!are!logged!in!already!you!simply!
have!to!click!‘Allow’!on!the!screen!to!continue!with!the!authentication.!If!you!are!
not!currently!logged!in,!Eventbrite.com!will!ask!you!to!input!your!Eventbrite!
credentials.!(Note:'This'is'a'secure'connection'with'Eventbrite.com'and'not'with'any'third'party)'!
!
!
!
!
Congratulations,!you!are!now!authenticated!!You!should!have!been!redirected!back!
to!your!Eventbrite!Configuration!screen!in!Salesforce,!and!all!of!your!configuration!
options!will!now!be!visible!to!you.!
!
Default&Configuration&!
You!can!get!started!syncing!right!away!or!make!configuration!changes!to!give!you!
control!over!how!the!sync!will!be!performed.!Let’s!go!over!some!of!the!default!
configurations!to!see!if!you!need!to!make!changes.!
&By!default,!we!have!the!following!Eventbrite!Object!to!Salesforce!Object!mappings:!
!
&&&&&&&&&Eventbrite&Object&&&&&&&&&&&&! &&&&&&&&&Salesforce&Object&Event! Campaign!
Order! Opportunity!
Buyer! Contact*!
Attendee!Detail! CampaignMember!
Attendee!Profile! Contact!
!
*The!association!between!Opportunity!and!Contact!is!through!the!Opportunity!
Contact!Role,!with!role!specified!as!“Buyer”.!!
!
!
!
!
!
!
Configuration&&&Sync&Configuration&&&
&&Filter&Events&&Select!a!filter!to!determine!which!Eventbrite!Events,!by!status,!are!created!in!
Salesforce.!You!can!select!multiple!statuses!here.!Control!+!click!to!unselect!a!status.!!
!
Sync&Orders!Narrow!down!which!Eventbrite!Orders,!if!any,!you!would!like!to!create!in!Salesforce.!
You!can!select!‘Paid’!to!import!only!orders!with!a!paid!transaction,!‘Paid!and!Free’!to!
import!all!orders,!or!‘Never’!to!not!import!Orders!at!all!during!a!sync.&!
Attach&Buyer&as&Contact&Role&&Eventbrite!Orders!are!mapped!to!Salesforce!Opportunities!by!default.!The!typical!
Salesforce!association!for!a!Contact!to!an!Opportunity!is!through!a!Contact!Role.!If!
you!do!not!want!to!use!this!association!and/or!plan!to!use!a!lookup!relationship!
from!Opportunity!to!Contact,!then!select!‘No’.!If!you!change!the!object!mapping!
away!from!Opportunity!later,!this!will!be!changed!to!‘No’!automatically.!!
&Associate&Attendees&with&Events&Attendee!information!is!imported!to!Salesforce!by!default.!If!you!do!not!wish!to!
import!this!information!then!select!‘No’.!
!
Custom&Questions&as&related&record&Custom!questions!represent!the!questions!your!Eventbrite!Event!organizer!has!
created!for!a!ticket!purchaser!to!answer!on!a!given!event.!Leaving!this!option!as!
“Yes”!creates!these!question!and!answer!pairs!as!records!in!Salesforce.com!and!
allows!you!to!display!them!on!Visualforce!pages!on!the!Event,!Attendee!Details,!and!
Attendee!Profile!mapped!objects!(as!described!later!in!the!documentation).!This!
operates!independently!of!the!Custom!Question!Mapping,!which!by!default!maps!
answers!to!custom!questions!into!specific!fields!on!a!given!Attendee!Detail!record.!!
!
Create&Attendees&As&If!you!do!wish!to!import!Attendee!information,!then!you!can!select!whether!it!is!
created!it!as!a!Lead!or!a!Contact!record.!!
!
!
!
Advanced&Object&&&Field&Mapping&&
!
!
You!can!also!explicitly!define!which!objects!and!fields!to!map!the!incoming!data!
from!Eventbrite!to!by!using!the!Advanced!Mapping!tool.!Mapping!changes!alter!
which!records!get!created/updated!in!Salesforce!and!their!associations!with!one!
another.!While!we!encourage!you!to!make!mapping!changes!to!fit!your!business!
model,!we!recommend!careful!consideration!before!applying!your!changes.!!!
!
&Let’s!run!through!a!full!example!of!changing!the!default!mappings!to!custom!objects!
to!clarify!how!the!mapping!works.!
!
Object&Mapping&&&First,!let’s!change!the!Eventbrite!Event!mapping!to!something!other!than!Salesforce!
Campaigns.!!Click!the!‘Edit!Object’!button!to!enter!edit!mode!for!this!object.!You!will!
be!presented!with!a!popup!that!warns!you!that!proceeding!with!an!object!mapping!
change!will!clear!out!existing!field!mappings.!Never!fear!!If!you!make!a!mistake,!you!
can!always!press!‘Cancel’!and!your!changes!will!be!reverted.!!Press!‘OK’!to!continue!
with!your!mapping!change.!
!
&
&&&&The!‘Target!Salesforce!Object’!picklist!determines!which!object!we!will!map!the!
Eventbrite!Event!object!to.!We!will!go!ahead!and!change!this!to!the!object!we!want!
to!map!to,!in!this!case!a!custom!object!called!‘Event__c’.!!
!
!
!
!
!
Once!we!have!selected!‘Event__c’,!the!field!mappings!reset.!This!is!because!we!are!
now!shown!Target!Salesforce!Fields!that!are!on!the!‘Event__c’!object.!Let’s!take!a!
look!at!what!we!have.!You!will!notice!that!some!fields!have!a!red!asterisk!(*),!which!denotes!that!mapping!them!is!required.!In!this!case!it!is!required!that!we!map!the!
Event!Id,!which!corresponds!to!the!Id!used!in!Eventbrite!to!uniquely!identify!an!
Event!(similarly!to!a!Salesforce!record!Id,!but!in!a!different!format).!!Don’t!be!
intimidated!–!we!have!provided!several!examples!that!should!help!you!get!going!
with!a!good!mapping!!Also!pay!attention!to!the!similarities;!if!you!master!the!
relationship!field!mapping!you!will!be!able!to!deftly!manipulate!these!mappings!
however!you!desire!!
!
**Note&to&Salesforce&Professional&Edition&users:!!In!order!for!a!custom!field!to!be!mappable!and!show!up!in!the!mapping!picklists,!the!
field!must!be!added!to!the!object’s!page!layout.!This!includes!fields!included!in!the!
package,!such!as!EventbriteSync__Eventbrite_Id__c!and!EventbriteSync__Buyer__c.&&
!
!
We!then!map!whichever!other!fields!we!would!like!to!map,!such!as!Event!Name!to!
Name,!Event!Description!to!Description__c,!and!Event!Status!to!Status__c.!When!you!
are!satisfied,!click!‘Save’!to!save!your!mapping!changes.!Remember,!if!you!are!not!
confident!in!your!changes!please!press!‘Cancel’,!and!your!changes!will!be!reverted,!
no!harm!done.!!
!
Let’s!do!the!same!thing!with!the!Eventbrite!Order!object.!We!have!gone!ahead!and!
mapped!this!object!to!our!custom!object!called!‘Order__c’.!As!for!the!field!mappings,!
we!notice!right!away!that!there!is!a!new!field!type!that!results!in!two!picklists!
showing!up!under!the!Target!Salesforce!Field.!This!corresponds!to!a!relationship!
field,!which!in!this!case!will!allow!you!to!relate!an!Order__c!record!to!our!Event__c!
record!through!a!lookup!field!that!we!select!here.!!Let’s!dissect!what!exactly!is!
needed!here:!!
!
!
The!first!picklist!(the!one!on!the!left)!represents!the!lookup!field!on!the!Target!
Salesforce!Object,!Order__c!in!this!case.!The!picklist!only!contains!relationship!fields!
that!correspond!to!either!masterKdetail!or!lookup!fields.!We!have!created!a!lookup!
to!Event__c!called!‘Event__c’,!so!we!will!select!that.!This!reloads!the!second!picklist!
(the!one!on!the!right)!with!fields!on!the!object!we!are!looking!up!to!through!the!
relationship,!Event__c.!We!want!to!select!the!field!on!the!lookup!object!that!contains!
a!unique!identifier!for!the!record!that!the!Eventbrite!Order!knows!about.!!
!
!
!
Remember!how!we!mapped!Event!Id!to!Eventbrite_Id__c!in!the!Eventbrite!Event!
object!mapping?!This!is!that!same!field.!Let’s!back!up!for!a!second:!what!we!are!
saying!here!is!that!we!want!our!Eventbrite!Orders!related!to!the!Eventbrite!Events.!
In!Eventbrite,!an!Order!is!associated!to!an!Event!with!the!Eventbrite!Id.!We!mapped!
Eventbrite!Orders!to!Order__c!and!Eventbrite!Events!to!Event__c,!and!when!we!
mapped!Event!we!stored!the!Eventbrite!Id!in!Eventbrite_Id__c.!We!then!chose!a!
lookup!field!from!Order__c!to!Event__c.!Lastly;!we!choose!the!field!on!Event__c!that!
contains!the!Order’s!Event!Id,!which!is!Eventbrite_Id__c.!The!first!field!is!the!current!
object’s!relationship!field;!the!second!is!the!field!on!the!other!object!that!has!the!
unique!identifier!from!Eventbrite.!!
!
Let’s!do!this!again!with!the!Order!Buyer.!The!details!of!the!Eventbrite!Buyer,!the!
person!who!buys!the!tickets,!are!mapped!to!the!Contact!object!by!default.!Unlike!the!
Eventbrite!Event,!the!unique!identifier!in!Eventbrite!for!a!buyer!is!the!buyer’s!Email!
address.!So!that!is!the!field!we!will!be!looking!for!when!we!build!the!relationship!on!
the!Order__c!object.
!
!
!
Once!again,!we!choose!the!lookup!field!that!looks!up!to!our!desired!object.!In!this!
case!the!lookup!field!Contact__c!on!the!Order__c!object!looks!up!to!the!Contact!
object.!!So!we!select!that!in!the!first!picklist,!it!reloads!the!options!in!the!second!
picklist.!We!then!choose!the!field!that!contains!the!unique!identifier!in!the!object!
Order__c!looks!up!to,!in!this!case!Contact.!As!we!saw!before,!that!field!is!the!Email!
field!on!the!Contact!object.!!
!
!
Let’s!do!this!one!last!time!with!the!Eventbrite!Attendee!Detail!object.!This!object!
represents!the!junction!object!between!an!Eventbrite!Event!and!an!Eventbrite!
Attendee.!This!means!that!we!can!have!multiple!Attendees!on!a!given!Event,!and!
who!can!also!be!on!other!Events,!a!manyKtoKmany!relationship.!
!
!
Event_Attendee__c!has!a!lookup!field!to!the!Event__c!object,!so!we!use!that!to!make!
the!Attendee!Event!association!as!we!have!done!before.!We!choose!the!lookup!field,!
Event__c,!and!then!we!choose!the!field!on!Event__c!that!contains!the!unique!
identifier!for!the!Eventbrite!Event,!which!is!Eventbrite_Id__c.!!
!
We!see!that!the!Eventbrite!Attendee!Profile!is!mapped!to!the!Salesforce!Contact!
object,!and!that!we!are!using!the!Email!field!to!store!the!unique!identifier,!the!
Attendee!Email.!
!
!
Back!to!our!Attendee!Detail!mapping,!we!choose!the!appropriate!lookup!field!to!the!
Contact!object,!Contact__c.!We!then!choose!‘Email’!from!the!second!picklist!the!
target!field!on!the!Contact!object,!which!contains!the!unique!identifier!from!
Eventbrite.!!
!
!
!
And!that’s!all!there!is!to!it!!!
!
Field&Mappings&&We!covered!quite!a!few!fields!in!the!Object!Mapping!examples.!Let’s!run!through!the!
different!field!types!here!again!just!to!be!certain!that!they!are!clear!to!you.!Keep!in!
mind!that!the!Target!Salesforce!Field!picklists!are!filtered!down!already!to!only!
show!the!fields!whose!data!types!can!accept!the!data!from!the!Eventbrite!Source!
Field.!!
!
Text&Fields&Many!of!the!fields!you!encounter!are!text!fields,!such!as!Event!Name!and!Order!
Status.!These!can!be!mapped!to!various!Salesforce!Target!Field!types!such!as!Text!
and!Long!Text!Area!
!
Numeric&Fields&Numeric!fields!such!as!Order!Amount!can!be!mapped!to!Target!Salesforce!fields!of!
numeric!field!types!such!as!Currency!and!Percent.!
!
Required&Fields&Fields!marked!with!a!red!asterisk!(*)!are!required.!These!fields!serve!as!unique!identifiers!for!the!record!and!are!necessary!to!prevent!duplication!and!to!link!
related!records!through!relationship!fields.!
!
Relationship&Fields&Eventbrite!Source!Fields!that!contain!data!that!correspond!to!another!object,!such!
as!Order!Event!(the!Eventbrite!Event!Id!of!the!given!Order),!must!be!mapped!to!a!
relationship!field!to!preserve!the!relationship!in!Salesforce.!As!is!detailed!in!the!
Object!Mapping!section!above,!this!requires!the!selection!of!the!relationship!field!
(lookup!or!masterKdetail)!on!the!target!object!as!well!as!the!field!on!the!parent!
object!that!contains!the!unique!identifier!coming!from!the!Eventbrite!Source!Field.!!
!
!
Filters&&On!each!object,!filters!can!be!set!which!narrow!down!the!data!to!be!imported!for!
that!object.!Choose!an!Eventbrite!Source!Field,!an!operator!(such!as!“>”!or!“!=”)!and!
a!value!to!compare!against,!and!then!click!save!to!apply!the!filter.!This!only!affects!
incoming!sync!data,!so!any!data!imported!from!previous!syncs!without!the!filter!
applied!that!do!not!meet!!
!
Record&Type&&One!each!object,!it!is!possible!to!specify!the!record!type!of!the!imported!record!by!
selecting!a!value!in!the!Record!Type!picklist.!The!picklist!shows!the!available!record!
types!for!the!given!object.!!Note!that!existing!records!will!be!changed!to!the!selected!
record!type!even!if!they!were!created!before!the!record!type!selection!was!applied,!
provided!that!those!records!are!not!filtered!out!by!a!custom!filter!or!disabled!for!
syncing.!
!
Enabled&&This!checkbox!controls!whether!this!object!will!be!synced!with!Eventbrite.!You!may!
uncheck!this!at!a!later!time!and!your!existing!records!from!previous!syncs!will!
remain!unaffected!by!the!new!data!imports.!!
!
!
Static&Mapping&&Static!mapping!allows!you!to!map!a!fixed!value!to!a!Target!Salesforce!field!that!will!
always!get!applied!during!a!sync.!For!example,!if!you!are!syncing!Orders!to!the!
Opportunity!object,!you!may!want!to!have!the!Stage!Name!always!set!to!‘Closed!–!
Won’!,!or!perhaps!the!Probability!set!to!‘100%’.!!To!accomplish!this,!go!into!edit!
mode!for!the!object,!and!click!‘New’!in!the!static!mapping!table!to!add!a!row.!Here’s!
how!it!looks:!!
!
!
!
!
Let’s!try!the!same!thing!for!Probability.!Click!‘New’!to!add!a!new!row,!then!set!the!
static!value!to!the!%!you!want!(we’ll!do!100),!then!change!the!field!type!picklist!to!
‘Number’,!then!choose!‘Probability’!for!your!Target!Salesforce!Field.!!
!
!
Custom&Question&Mapping&!
This!feature!allows!you!to!map!an!attendee's!responses!to!custom!questions!on!the!
Eventbrite!order!form!to!custom!fields!of!your!choosing.!You!simply!need!to!copy!
over!the!value!of!the!question,!for!example!‘Where!did!you!hear!about!us?’,!into!the!
Question!text!field,!then!choose!a!Target!Salesforce!Field.!It!is!very!important!that!
the!question!inputted!here!matches!exactly!what!is!in!Eventbrite,!so!we!recommend!
copy!and!pasting!the!question!from!Eventbrite!to!make!sure!that!no!errors!are!
made.!You!will!likely!have!different!questions!for!different!events.!You!can!safely!
add!as!many!or!as!few!questions!as!you!would!like!(across!all!events)!as!mappings!
here,!and!the!sync!will!import!only!what!you!have!set!up.!!Here’s!what!it!looks!like:!!
!
!
!
!
!
!
!
!
!
!
Sync&!
Syncing&! !
It’s!time!to!start!importing!some!data!from!Eventbrite!!We!have!three!ways!of!
syncing!your!data!from!Eventbrite:!an!onKdemand!sync!initiated!by!a!button!click,!a!
scheduled!sync!that!recurs!daily!at!a!specific!time,!and!a!single!event!sync!that!is!
also!initiated!by!a!button!click.!!
!
To!initiate!a!sync,!go!to!the!Eventbrite!Config!tab.!If!you!are!authenticated,!you!
should!see!a!section!called!Eventbrite!Synchronization.!Start!the!sync!process!by!
clicking!the!“Start!Sync”!button.!!
!
Sync&Status&&
!
!
If!you!clicked!on!the!“Start!Sync”!button,!you!will!be!automatically!taken!to!the!Sync!
Status!page.!Here!you!can!view!the!status!of!an!ongoing!sync.!Use!the!“Refresh”!
button!to!reload!the!progress!of!the!sync!and!see!errors!if!any!have!been!logged!
during!the!process.!You!can!also!navigate!to!the!sync!status!page!at!any!time!by!
clicking!on!the!“Last!Sync!Date”!link!in!the!Eventbrite!Synchronization!section.!
!
Scheduled&Sync&!
!
!
!
In!the!Eventbrite!Synchronization!section!you!will!find!the!Scheduled!Sync!
subsection.!This!allows!you!to!setup!a!sync!that!occurs!daily!at!the!time!you!specify.!
Any!changes!you!make!apply!immediately:!for!instance,!if!you!select!“No”,!then!any!
daily!sync!that!was!schedules!is!automatically!cancelled.!Likewise,!if!you!select!
“Yes”,!then!a!sync!is!scheduled!at!the!time!visible!to!the!right.!Changing!the!time!of!
the!sync!will!also!apply!immediately.!
!
&
Single&Event&Sync&!
A!sync!can!be!initiated!for!a!particular!Event,!rather!than!for!all!of!the!Eventbrite!
data!associated!to!your!account.!!This!can!be!done!by!clicking!the!“Eventbrite!Sync”!
custom!button.!!This!will!also!pull!all!data!for!that!particular!Event!(such!as!Orders!
and!Attendees),!so!long!as!you!have!not!disabled!them,!and!filters!will!be!respected!
as!well.!
!
This!button!has!been!included!in!the!package!for!campaigns,!but!if!you!have!mapped!
Eventbrite!Events!to!another!object,!you!can!reuse!the!code!we!have!provided!with!
one!small!modification!to!create!your!own!button!on!that!object.!Create!a!custom!
button!on!the!object!you!have!mapped!Eventbrite!Events!to.!Below!is!a!screenshot!
you!can!use!as!a!guide.!
!
!
The!key!here!is!to!change!“Campaign”!in!the!Custom!Button’s!JavaScript!code!to!the!
object!you!are!creating!this!button!on.!
!
Custom!Button!JavaScript!Code:!
window.location.href="/apex/EventbriteSyncSingleEvent?id={!Campaign.Id}";!
!
For!example,!if!the!object!you!have!mapped!Eventbrite!Events!to!is!“Event__c”,!then!
your!JavaScript!code!should!be:!!
!
Custom!Button!JavaScript!Code!on!Event__c!Object:!
window.location.href="/apex/EventbriteSyncSingleEvent?id={!Event__c.Id}";!
Integration&Logs&!
Click!on!the!“Integration!Logs”!tab!to!view!logs!of!any!EventbriteSync!related!
activity.!If!your!Log!Level!setting!is!set!to!‘Debug’,!then!this!will!include!logs!for!any!
sync!action!and/or!dynamic!loading!of!data!from!Eventbrite,!such!as!Tickets!and!
Discount!Codes!on!Events.!!However,!if!you!choose!‘Error’,!then!you!will!only!see!
messages!related!to!errors!during!callouts!of!processing.!!You!can!adjust!your!Log!
Level!during!Authentication:!!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
Additional&Features&&Custom!Question!and!Answers,!Ticket!Details,!and!Promo!Codes!each!are!available!
as!individual!Visualforce!pages!that!can!be!added!to!the!Campaign!object!by!default.!!
These!pages!are!available!in!the!package!to!add!to!your!page!layouts!as!desired.!The!
Custom!Question!and!Answer!pages!are!called!EventbriteQA,!EventbriteQAContact,!
EventbriteQALead!and!are!available!on!the!Campaign,!Contact,!and!Lead!objects!
respecively.!The!Ticket!Details!page!is!called!EventbriteTickets,!!and!the!Promo!
Codes!page!is!called!Eventbrite!Promo!Codes.!!
!
It!is!also!possible!to!show!one,!two,!or!all!three!of!these!features!on!one!page!on!
whichever!object!you!choose!to!map!to!Eventbrite!Events.!This!can!be!accomplished!
by!using!the!following!Visualforce!code:!
!
Visualforce!code!to!show!Event!Details!on!Event__c!custom!object!
<apex:page!standardController="Event__c"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="true"!
showTicketsComponent="true"!showPromoCodesComponent="true"/>!
</apex:page>!!
!
The!code!snippet!above!will!display!a!page!containing!all!three!components!
(Question!and!Answer,!Ticket!Details,!and!Promo!Codes)!on!a!record!of!the!Event__c!
object,!as!long!as!this!is!the!object!to!which!you!have!Eventbrite!Events!mapped!to.!
You!may!notice!that!there!are!three!“true”!values!highlighted!in!yellow.!You!can!set!
any!of!these!to!false!if!you!do!not!want!to!show!these!components!on!the!page.!We!
will!describe!the!three!components!in!this!guide!hereafter.!
&Custom&Questions&and&Answers&!
In!addition!to!the!custom!question!to!field!mapping!described!earlier!in!the!
configuration!section,!questions!and!answers!are!synced!by!default!into!custom!
objects.!This!information!is!available!for!viewing!on!record!details!for!the!objects!
you!have!mapped!to!Eventbrite!Events,!Attendee!Details,!and!Attendee!Profiles!
through!Visualforce!pages.!By!default,!we!have!included!Visualforce!pages!for!the!
Campaign,!Contact,!and!Lead!records!that!show!this!information.!Here’s!a!
screenshot!of!the!data!we!are!referring!to:!!
!
!
!
!
This!page!is!shown!inline!on!a!Campaign!record!that!has!numerous!questions!that!
were!answered!by!a!particular!attendee.!The!‘Attendee’!column!has!a!link!to!the!
contact!or!the!lead!record!of!the!Attendee!whose!answers!are!visible.!The!“Go!to!
List”!link!is!displayed!if!there!are!more!than!five!answered!questions!across!all!
contacts.!Clicking!on!it!shows!an!expanded!view!with!all!the!questions!and!their!
answers!for!that!particular!Eventbrite!Event.!!
!
The!same!information!can!be!displayed!for!a!particular!Eventbrite!Attendee!
(mapped!as!either!Contact!or!Lead).!!
!
!
Here!we!see!the!same!information!as!before,!except!there’s!an!“Event”!column!that!
links!to!the!Eventbrite!Event!record,!in!this!case!a!Campaign!record,!for!which!this!
contact!is!associated.!!
!
As!mentioned!earlier,!if!you!have!mapped!the!Eventbrite!Events!to!an!object!other!
than!Campaign!and!wish!to!show!the!page!on!those!records,!you!can!create!a!
Visualforce!page!just!like!the!one!above!with!some!slight!modifications!to!our!
existing!code.!
!
Visualforce!code!to!show!Custom!Question!and!Answers!on!Campaign!
<apex:page!standardController="Campaign"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="true"!
showTicketsComponent="false"!showPromoCodesComponent="false"/>!
</apex:page>!!
!
In!order!to!get!this!page!to!work!on!an!object!such!as!Event__c,!you!simply!need!to!
create!a!new!Visualforce!page,!paste!this!code,!and!replace!“Campaign”!with!
“Event__c”.!The!following!is!the!sample!code!changed!to!work!on!the!Event__c!object:!!
!
!
Visualforce!code!to!show!Custom!Question!and!Answers!on!any!Object!mapped!to!
Eventbrite!Events!
<apex:page!standardController="Event__c"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="true"!
showTicketsComponent="false"!showPromoCodesComponent="false"/>!
</apex:page>!!
&The!same!approach!as!above!can!be!used!to!include!this!page!on!any!object!you!have!
chosen!to!map!to!Eventbrite!Attendee!Details.!!
!
Visualforce!code!to!show!Custom!Question!and!Answers!on!any!Object!mapped!to!
Eventbrite!Attendee!Details!
<apex:page!standardController="Event_Attendee__c"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="true"!
showTicketsComponent="false"!showPromoCodesComponent="false"/>!
</apex:page>!
Ticket&Details&&The!ticket!details!represent!the!types!of!tickets!that!you!have!set!up!for!a!particular!
Eventbrite!Event.!This!information!is!viewed!as!a!component!on!the!inline!
Visualforce!page!that!also!contains!custom!question!and!answer!information!and!
promo!code!information.!These!are!typically!classified!as!paid!or!free,!and!
information!such!as!how!many!tickets!have!been!ordered!and!how!many!remain!can!
be!viewed!on!this!panel.!Here!is!an!example!of!this:!!
!
!
!
This!information!is!fetched!dynamically,!so!it!will!display!the!latest!information!in!
Eventbrite!without!requiring!a!sync!to!update!its!content.!The!code!to!display!this!is!
as!follows:!
!
Visualforce!code!to!show!Ticket!Details!on!any!Object!mapped!to!Eventbrite!Events!
<apex:page!standardController="Event__c"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="false"!
showTicketsComponent="true"!showPromoCodesComponent="false"/>!
</apex:page>!!
!
!
Promo&Codes&! !
This!is!the!third!component!that!is!visible!in!the!Event!Details!inline!Visualforce!
page.!!It!consists!of!two!subKcomponents:!Access!Codes!and!Discount!Codes.!Each!
hold!special!meanings!in!Eventbrite!and!have!an!effect!on!the!ticket!type!that!they!
are!applied!to.!!
!
!
This!page!can!be!created!on!a!custom!Event__c!object!with!the!following!code:!
!
Visualforce!code!to!show!Promo!Codes!on!any!Object!mapped!to!Eventbrite!Events!
<apex:page!standardController="Event__c"!
extensions="EventbriteSync.EventbriteDetails"!id="mainPage"!
tabstyle="EventbriteSync__Eventbrite__tab">!!
<EventbriteSync:EventDetailsWrapper!pageRecordId="!
{!recordId}"!pageObjectMapType="{!objectMapType}"!
pageEventbriteId="{!eventbriteId}"!showQAComponent="false"!
showTicketsComponent="false"!showPromoCodesComponent="true"/>!
</apex:page>!!
!
!
In!addition!to!viewing!the!promo!code!information,!you!have!the!option!of!creating!
new!promo!codes!directly!from!Salesforce!as!well.!!Click!on!“New!Discount”!or!“New!
Access!Code”!to!navigate!a!form!to!create!a!new!discount!or!access!code!
respectively.!Discount!Codes!and!Access!Codes!function!in!a!very!similar!fashion.!
Let’s!do!a!quick!run!through!of!creating!a!new!access!code.!!
!
!
!
Here!you!can!select!one!or!more!ticket!types!to!apply!the!code!to!and!specify!the!
other!required!information.!Once!you!are!done,!click!“Save”.!!You!will!then!be!taken!
to!the!expanded!view!for!the!access!codes,!which!show!all!access!codes!that!are!
valid!for!the!given!Eventbrite!Event.!
!
!
!
You!can!create!more!access!codes!from!here!or!click!“Back”!and!you’ll!be!taken!back!
to!the!Event!record!from!which!you!came.!!
!
Contact&Lists&!
Contact!Lists!contain!lists!of!people!for!whom!you!can!perform!mass!emails!to!in!
Eventbrite.!We!have!provided!the!ability!to!access!and!modify!existing!ones!in!
Salesforce,!as!well!as!create!new!ones.!!
!
!
!
To!create!a!new!contact!list,!click!the!“New!Contact!List”!button.!You!must!then!
specify!a!name!for!the!list,!and!click!“Save”.!That’s!it!!That!contact!list!can!now!be!
found!in!your!Eventbrite!account.!Once!you!have!created!a!contact!list,!you!can!add!
contacts!or!leads!to!it.!Click!the!“Select”!link!on!the!left!side!of!the!row!of!the!desired!
contact!list.!You!will!be!taken!to!a!list!of!the!Eventbrite!Contacts!on!the!list.!!
!
!
!
!
You!can!add!a!Salesforce!Contact!or!Lead!by!clicking!the!“Add!Contact”!or!“Add!
Lead”!button!respectively.!You!can!then!use!the!lookup!field!icon!to!search!for!the!
contact!or!lead!you!wish!to!add.!This!will!open!a!popup!for!you!with!contacts!or!
leads!matching!your!search!criteria.!Select!one!by!clicking!on!their!name,!which!
should!be!a!link.!Then!click!“Add!Contact”!or!“Add!Lead”!appropriately!on!the!main!
page!next!to!the!lookup!field!and!the!contact!or!lead!will!be!added!to!your!list.!!
!
!
!