introduction - marketo developersdevelopers.marketo.com/support/marketo_crm_sync_reference... ·...

24

Upload: habao

Post on 06-Mar-2018

220 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation
Page 2: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

INTRODUCTION

This document aims to provide detailed information regarding implementation of a synchronization architecture between Marketo and an external CRM system. Entities are described as well as the specifics of performing initial synchronization, or “bootstrapping,” and maintaining synchronization of new and updated records.

Page 3: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

TableofContentsMarketo-CRMSynchronizationArchitecture...............................................................................................1

Introduction.............................................................................................................................................1

Overview..................................................................................................................................................4

TypicalSynchronizedEntities...................................................................................................................4

Leads....................................................................................................................................................4

Companies............................................................................................................................................6

Opportunities.......................................................................................................................................7

OpportunityRoles................................................................................................................................8

SalesPersons........................................................................................................................................9

ExtendedSynchronizedEntities.............................................................................................................10

CustomObjects..................................................................................................................................10

Activities.............................................................................................................................................11

Programs............................................................................................................................................13

ProgramMembership........................................................................................................................14

StaticLists...........................................................................................................................................15

Synchronization..........................................................................................................................................16

Configuration..........................................................................................................................................16

SynchronizedFields............................................................................................................................16

SynchronizedCustomObjects............................................................................................................16

SynchronizedActivityTypes...............................................................................................................16

BootstrappingConfiguration..............................................................................................................16

SynchronizationInterval.....................................................................................................................16

BootstrappingfromMarketo.................................................................................................................17

Leads..................................................................................................................................................17

Companies..........................................................................................................................................17

OpportunitiesandRoles.....................................................................................................................17

SalesPersons......................................................................................................................................18

CustomObjects..................................................................................................................................18

ProgramsandMembership................................................................................................................18

Activities.............................................................................................................................................18

ListsandMembership........................................................................................................................19

RecommendedBootstrappingOrder.................................................................................................19

Page 4: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

MaintainingSynchronization..................................................................................................................19

RecommendedSynchronizationOrder..............................................................................................19

LeadsandCompanies.........................................................................................................................20

SalesPersons......................................................................................................................................21

OpportunitiesandRoles.....................................................................................................................21

Activities.............................................................................................................................................22

CustomObjects..................................................................................................................................22

Program-OpportunityAttribution..........................................................................................................22

First-TouchAttribution(FT).................................................................................................................22

Multi-Touch(MT)................................................................................................................................23

Page 5: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

OverviewMarketorecommendsimplementationofCRMsynchronizationapplicationsusingatwo-waypollingmodel,retrievingchangesandnewrecordsfromeithersystem,andpushingthosechangesasmappedintheapplicationconfigurationtotheothersystem.ThemiddlewaresystemshouldqueryforchangesofselectedrecordtypesperiodicallyandthenperformanynecessarytranslationandfiltrationbeforepushingtherecordupdatestoCRMorMarketorespectively.

TypicalSynchronizedEntitiesAminimallyfunctionalCRMintegrationwithMarketowillprovidetwo-waysynchronizationofLeads,andCompanies,andone-wayCRM-to-Marketointegrationofthefollowingentities:

• Opportunities• OpportunityRoles• SalesPersons

GlobalNotesforObjectModels

SomeobjectschemasinMarketoaredynamicanduser-editable,soitisextremelydesirabletoallowdynamicupdatestotheschema,andthisshouldbedoneasaroutinepartofasynchronizationcycle.Forthesetypesofobjects,aDescribe{Object}endpointismadeavailable,whichwillreturnallofthefieldsavailabletotheMarketoAPIs,alongwithdatatypeandlengthinformationwhereapplicable.Whereavailable,theDescribeendpointshouldbeusedastheexclusivesourceoftruthfortheobjectschema.Administrativeusersshouldbepermittedtoadd,removeandaltermappingfornon-IDfieldsatanytime.

LeadsPrimaryKey:id

TheintegeridofaMarketoleadrecordandtheprimarykeyaresystemmanagedbyMarketo,andmayonlybeassignedbyMarketo.Anyinsertoperationsattemptedbyaforeignsystemwhichincludeidwillberejected.

Page 6: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

InMarketo,leadsrepresentanyperson-recordwhichisasalesormarketingtarget.Theyaredistinctfromsalespersonrecords,whichrepresentasalespersonwhohasresponsibilityoverleadrecords.AllSmartCampaigns,commonlyreferredtoasa“workflow”innon-Marketosystems,filter,trigger,andoperateonleadrecords,basedontheircharacteristicsandactions.UnlikemosttypicalCRMsystems,MarketodoesnothavetwoseparaterecordtypesforLeadandContactrecords,rather,eachperson-recordinMarketohasadditionalfieldswhichmatchthoseavailableforCompanies.ThesetofcompanytypefieldsonagivenrecordisnolongerupdateablewhentheexternalCompanyIdfieldissetforthatrecord,andisdeferredtothelinkedcompanyrecord.

Model

LeadsarehighlyextensibleinMarketoandmayincludeanunlimitednumberofcustomfields.Whensynchronizinganyparticularsubscription,asetofstandardfieldsshouldnotbereliedupon,andtheDescribeLeadfunctionoftheRESTAPIshouldbeusedastheexclusivesourceoftruthtodeterminefieldavailabilityandupdateabilityinaparticularsubscription.

Themodelforaleadisalsopotentiallydynamic,asfieldsmaybeaddedorhiddenbyend-usersatanytime,sotheschemaofleadrecordsshouldbemaintainedwheneverasynchronizationcycleisinitiated.

AcustomleadfieldshouldbecreatedinMarketotoholdtheprimarykeyoftheCRM,inordertopermitunambiguousupsertoperationsforleadrecords.

Mapping

LeadfieldmappingshouldbedeterminedbytheavailablepersontypesintheCRMsystem.AtypicalCRMimplementationwouldonlyincludeLeadsandContactsandwouldbemappedtothelogicalcorrespondingfieldforeachrecordtype.WhenpossibleasuggestedlistofmappingsshouldbegivenforfieldswhichareknowninbothMarketoandtheCRM,butusersshouldbeallowedtochangethesefieldmappingsfreelytoaccountfordifferentusages.Ifleadsaremappedtomultipleobjecttypes,thenmappingsforeachtypeshouldbeallowedtobemappedindependently.Itispossibleandsometimesdesiredtohaveleadsmappedtomultipletypesofrecords(e.g.LeadsandContactsintheCRM),differentiatingthetypeonthebasisofacustomCRMtypestringfield,referringeithertotheIDoftheparticularrecordtype,oraplaintextstringrepresentingthetype.

Relationships

LeadsarerelatedtonumerousaccessibleobjecttypesinMarketo:

Object RelationshipType LinkType LinkFieldCompany N:1 LeadField externalCompanyIdSalesPerson N:1 LeadField externalSalesPersonIdOpportunity N:N OpportunityRole

ObjectleadId

CustomObjects 1:N,N:1,orN:N SeeCustomObjectSection

SeeCustomObjectSection

Activities 1:N ActivityField leadIdProgram N:N ProgramMembership

ObjectSeeProgramMembership

Page 7: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Accessibility

LeadsmaybereadandwrittentoinMarketofreelyprovidedthattheRead-WriteLeadPermissionhasbeenawardedtotheAPIuserbeingused.Leadscanbereadthroughthefollowingendpoints:

• GetLeadbyID• GetMultipleLeadsbyFilterType• GetMultipleLeadsbyListId• GetMultipleLeadsbyProgramId

Leadscanbewrittentothroughthefollowingendpoints:

• Create/UpdateLeads• ImportLead

LeadRecordsmaybemergedthroughtheMergeLeadsendpoint.Adiscussionofthisendpoint’sbehaviormaybefoundhere.

LeadsmaybedeletedthroughtheDeleteLeadsendpoint.

LeadMetadataisreadthroughtheDescribeLeadendpoint.

CompaniesPrimaryKey:externalCompanyId,id

externalCompanyIdisanarbitrarystringfieldsetuponcreationbytheexternalsystem.Itisguaranteedtobeunique.Itisnotupdateable.Idisauniquesystem-generatedintegerid.

Companyobjectsrepresenttheorganizationtowhichleadrecordsbelong.LeadsareaddedtoaCompanybypopulatingtheircorrespondingexternalCompanyId.Leadslinkedtoacompanyrecordwilldirectlyinheritthevaluesfromacompanyrecordasthoughthevaluesexistedonthelead’sownrecord.Attributesavailableonthecompanyrecordareavailablefortriggeringandfilteringonleadrecordsfromwithintheapplication.

Companyrecordsmayonlybecreatedbyexternalsystems,andtheCRMshouldbetreatedasthesourceoftruth,exceptwhenchangestocompanyrecordsaredetectedinMarketo.

Model

• Companiesarefullyextensibleandmayhaveanynumberandtypeofcustomfields• Theschemashouldbedynamicandcapableofingestingorevictingfieldsfromthemodelatany

time.ItshouldberefreshedwithDescribeCompanyasaroutinepartofsynchronization.• DescribeCompanyshouldbeusedastheexclusivesourceoftruthfortheschemaofcompany

Mapping

CompanyrecordsinMarketoshouldbemappedtoanequivalentobjecttypeinCRM.ThesearetypicallyreferredtoasCompanies,Accounts,orOrganizations,butterminologymayvaryfordifferent

Page 8: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

CRMs.UsersshouldbeallowedtoeditthemappingsofMarketoCompanyfieldstoCRMCompanyfields.

TheprimarykeyofcompanyrecordsinCRMshouldbemappedtotheexternalCompanyIdfieldwheneverpossible.

Relationships

Object RelationshipType LinkType LinkFieldLead 1:N LeadField externalCompanyIdOpportunity 1:N OpportunityField externalCompanyId

Accessibility

Inordertoreadandwritetocompanyrecords,anAPIusermusthavetheRead-WriteCompanypermission.

Companiesmaybereadthroughasingleendpoint,GetCompaniesByFilterType.Companiesmayonlybefilteredonalimitednumberoffields,whichareprovidedinthesearchableFieldsattributeoftheDescribeCompanyresult.

CompaniescanbewrittentousingtheCreate/UpdateCompaniesendpoint.

CompaniesmaybedeletedthroughtheDeleteCompaniesendpoint.

OpportunitiesPrimaryKey:externalOpportunityId,marketoGUID

externalOpportunityIdisanarbitrarystringfieldwhichissetuponcreationbytheexternalsystem.Itisguaranteedtobeuniqueandisnotupdateable.marketoGUIDisasystem-generatedGUIDstringwhichisguaranteedtobeunique.

OpportunityobjectslooselyrepresentsalesdealsinMarketo,andareresponsibleforattributingrevenuetoleads,companiesandprograms.OpportunityusagevariesbetweenbothCRMimplementationsandorganizationalimplementations,sotheymayencompassanywherefromasalesdealcompletewithindividuallineitemstobroaderrecordsofsalesefforts.Itmaynotbepossibletoaccommodateanorganization’susecasesfortrackingsalesdealsthroughtheimplementationopportunitiesalone,soadditionalextensionthroughCustomObjectsmayberequired.

ToperformproperRevenueAttribution,Opportunitiesmustbelinkedtoleadsviaroles,andlinkedtocompaniesviatheexternalCompanyIdfield.ForinformationonRevenueAttribution,pleaseseethe<Program-OpportunityAttribution>section.

Model

Likeleadsandcompanies,opportunitieshaveaflexibleanduser-extensibleschema,whichshouldberoutinelyupdatedthroughtheDescribeOpportunityendpoint.

Mapping

Page 9: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Ingeneral,thesamemappingstrategyshouldbeemployedforOpportunitiesasLeadsandCompanies,butOpportunitieshavesomespecial-casefieldswhichshouldbemappedwithcare:

• The“Amount”fieldinMarketoisthefieldfromwhichallrevenuecalculationsaremadeandshouldalwaysbemappedtotheOpportunityfieldwhichrepresentstheestimatedamountoftheproposeddealbeforeclose,andtherealizedamountofthedealafterclose.

• The“RevenueExpected”metricusestheMarketo“CloseProbability”fieldtoderivethemetricfromamount.TheCloseProbabilitypercentageismultipliedagainstAmounttoreturnRevenueExpected.

• Stagehasasetofcalculatedvaluesbasedonthe“closed”and“won”fieldsonopportunityrecords.Closedshouldbesettotrueifthesalesdealisnolongerbeingpursued,eitherbecausetheeffortfailed,orbecausethedealwaswon.Wonshouldbesettotrueonlyifclosedisalsotrueandthedealhasbeenwon.DifferentCRMsmaytreatthesecharacteristicdifferently,andsotheymayrequiretranslationfromthesystem.

externalOpportunityIdshouldbemappedtotheprimarykeyintheCRMwheneverpossible.

externalCreatedDateshouldbemappedtotheCRMsystem’scanonicalcreationdateforopportunities.

Relationships

Object RelationshipType LinkType LinkFieldCompany N:1 OpportunityField externalCompanyIdLead N:N OpportunityRole

ObjectleadId

Program N:N SeeProgram-OpportunityAttributionsection

SeeProgramOpportunityAttributionsection

Accessibility

Inordertoreadandwritetoopportunities,anAPIusermusthavetheRead-WriteOpportunitiespermission.

OpportunitiescanbereadviatheGetOpportunitiesbyFilterTypeendpoint.Likecompanies,theyhavealimitedsetofsearchablefieldswhichcanberetrievedviatheDescribeOpportunityendpoint.

OpportunitiesmaybecreatedorupdatedviatheCreate/UpdateOpportunitiesendpoint.

OpportunitiesmaybedeletedthroughtheDeleteOpportunitiesendpoint.

OpportunityRolesPrimaryKey:CompoundKey[leadId,role,externalOpportunityId],marketoGUID.

OpportunityroleshaveacompoundkeyofleadId,roleandexternalOpportunityId.leadIdandexternalOpportunityIdarerelationshipfieldstotheirrespectiveleadandopportunities.Toinsertarecord,orupdateitviaitsdedupeFieldskey,allthreefieldsmustbepassedintherecord.marketoGUIDisauniqueGUIDstring,whichissystem-managedandisgeneratedoncreationoftherecord.

Page 10: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Opportunityrolesarelinkobjectsfromleadrecordstoopportunityrecords.Withoutthisrelationship,leadswillnotbeassociatedtoOpportunitiesinanyway.Theyarealsorequiredrelationshipstoperformend-to-endProgramOpportunityAttribution.

Model

TheschemaforOpportunityRolesisnon-extensibleandshouldbederivedfromtheDescribeOpportunityRoleendpointonce.PrimarycontactsonanopportunityaredesignatedinMarketobytheisPrimaryflagontheopportunityrole.IftheprimarycontactconceptexistsintheCRMbeingintegrated,thisshouldbeimplementedaspartofthemodelandmapping.

Mapping

isPrimaryshouldbematchedifthereisaconceptofprimarycontactsintheCRMbeingintegrated.

externalCreatedDateshouldbemappedtothecanonicaldateintheCRMwhichcorrespondstothedatethatapersonbecameamemberoftheopportunity.

Relationships

Object RelationshipType LinkType LinkFieldLead N:1 OpportunityRoleField leadIdOpportunity N:1 OpportunityRoleField externalOpportunityId

Accessibility

Toreadandwriteopportunityroles,anAPIusermusthavetheRead-WriteOpportunitiespermission.

OpportunityRolescanbereadviatheGetOpportunityRolesbyFilterTypeendpoint.Likecompanies,theyhavealimitedsetofsearchablefieldswhichcanberetrievedviatheDescribeOpportunityendpoint.

OpportunityRolesmaybecreatedorupdatedviatheCreate/UpdateOpportunityRolesendpoint.

OpportunityRolesmaybedeletedthroughtheDeleteOpportunityRolesendpoint.

SalesPersonsPrimaryKey:externalSalesPersonId,marketoGUID

externalSalesPersonIdisanarbitrarystringfieldsetuponcreationbyanexternalsystem.marketoGUIDisauniquesystem-managedGUIDstringwhichissetuponcreationbyMarketo.

SalesPersonsrepresentaninternalentitywhichhasownershipofasetofpersonrecords,typicallyforsalespurposes.TheinformationpresentontheserecordsisusedtoderivecertainformulafieldsandtokensforleadrecordsinMarketo.

Model

TheschemaforSalesPersonsisnon-extensibleandshouldbereadoncefromtheDescribeSalesPersonendpoint.

Page 11: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Mapping

externalSalesPersonIdshouldbemappedtotheprimarykeyforthecorrespondinguserorownerobjecttypeintheintegratedCRM.

Relationships

Object RelationshipType LinkType LinkFieldLead 1:N LeadField externalSalesPersonId

Accessibility

InordertoreadandwritetoSalesPersons,anAPIusermusthavetheRead-WriteSalesPersonpermission.

SalesPersonscanbereadviatheGetSalesPersonsbyFilterTypeendpoint.Likecompanies,theyhavealimitedsetofsearchablefieldswhichcanberetrievedviatheDescribeSalesPersonsendpoint.

SalesPersonsmaybecreatedorupdatedviatheCreate/UpdateSalesPersonsendpoint.

SalesPersonsmaybedeletedthroughtheDeleteSalesPersonsendpoint.

ExtendedSynchronizedEntitiesCustomObjectsPrimaryKey:marketoGUID,AdditionalUserDefinedkeys

Customobjectsalwayshaveauniquesystem-generatedmarketoGUIDwhichissetuponcreation.Therewillbeatleastoneadditionalkey,andpossiblymore,whichareuser-definedinthecustomobjectdefinition.Keysmaybesinglefieldsfortypeswhicharelinkeddirectlytoleadsorcompanies,andmayhavecompoundkeysfortypeswhicharelinkedtoleadsoraccountsandanothercustomobjecttype.KeyscanbedeterminedbyusingDescribeCustomObjecttoretrievethelistofdedupeFields.

MarketoallowsthedefinitionofCustomObjecttypesbyuserstoextendtheMarketoschema.Marketocustomobjectsmayberelatedtoleadsorcompanies,ineitheraonerecordtomanycustomobjectconfiguration,oramany-to-manyconfigurationthroughtheusageofintermediatecustomobjects.

Page 12: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Model

TheschemaforCustomObjectsisdynamicandvariableacrossallsubscriptions.EachCustomObjectmayhaveanynumberoffieldswhichmayupdated

Mapping

CustomObjectmappingshouldbedrivenbycustomerrequirementsandcan’tberigidlydefinedingeneral.

Relationships

MarketoCustomObjectsmayonlyberelatedtoeitherleadsorcompanies,ineithera1:NorN:NconfigurationthroughtheusageofintermediateCustomObjects.RelationshipscanbederivedfromtherelationshipsparameteroftheresultofDescribeCustomObject.

Accessibility

Toreadandwritetocustomobjects,anAPIusermusthavetheRead-WriteCustomObjectpermission.CustomObjectshavethestandardsetofGet,Create/Update,andDeleteendpoints.AListCustomObjectsendpointisalsoprovidedtoagiveameansofdeterminingwhatCustomObjecttypesareavailableinagivensubscription.

ActivitiesPrimaryKey:id

ActivitieshaveauniqueintegeridthatissetuponcreationbyMarketo.

ActivitiesarerecordsofactivitiesassociatedtoleadrecordsinMarketo.Theymayrecordactivityofmanydifferenttypes,asindicatedbytheiractivityTypeId.Activitiesareread-onlyinMarketo.Certainactivitytypesareprunedafter90daysintheMarketosystem.PrunedActivities:

Page 13: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

• DataValueChange• AddtoList• RemovefromList• VisitWebPage• ClickLink

Thetypesofactivitiesavailableinagivensubscriptionarevariabledependingonmanyfactors,includingtypeofsubscription.TheavailabletypesandtheirmetadatashouldalwaysbedeterminedbycallingGetActivityTypesfromthetargetsubscription.

Activitiesareread-only

Model

Activitieshaveasemi-strictschema.Thefollowingfieldsaredefined,butnotnecessarilyusedforallactivitytypes:

Name Datatype Descriptionid Integer UniqueidleadId Integer Idofthelinkedlead.MapstoidonleadrecordsactivityTypeId Integer IdofthetypeofactivitycorrespondingtoaresultofGet

ActivityTypesactivityDate Datetime DatethattheactivityoccurredprimaryAttributeValue String ValueoftheprimaryattributeprimaryAttributeValueId Integer Idoftheprimaryattributeattributes Array Arrayofname/valuepairsrepresentingtheattributesofthe

activity

Eachactivitytypehasaprimaryattributewhichcorrespondstoavalueofsomekind.TheattributemayberelatedtoanytypeofassetorobjecttypeinMarketo.Forexample,theprimaryAttributeValueoftheVisitsWebPagetypecorrespondstothenameorURLofthewebpagewhichwasvisited.TheMarketonamewillbepresentedifthepagewasalandingpage,andtheURLifitisnotaMarketopage.Attributesconsistsofanarrayofname/valuepairs,namingeachofthefieldsforanactivitytypeandthecorrespondingvalue.

Activitiesmaybemodeledaseitherasingleobjecttypewithanarrayofattributes,orasindividualobjecttypes,dependingontherequirementsorbestpracticesfortheexternalCRMsystem.

Relationships

ActivitiesinMarketoarealwaysrelatedtoleadrecordsthroughtheleadIdfield.SomeactivitytypesmayhavearelationshiptootherMarketoassetsthroughtheirprimaryAttributeValue.

Accessibility

Inordertoreadactivities,anAPIusermusthavetheRead-OnlyActivitypermission.TowritecustomactivitiestheRead-WriteCustomActivitiespermissionisrequired.

Page 14: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

ActivitiescanbereadthroughtheGetLeadActivities,GetLeadChanges,andGetDeletedLeadsendpoints.CustomActivitiesmaybewrittenthroughtheWriteCustomActivitiesendpointifacustomobjecttypehasbeendefined.

ProgramsProgramsinMarketoarebothaprimaryorganizationalassetandakeyattributioncomponent.Programsrepresentmarketingcampaigns,individualmarketingtacticsandassets,andoperationalworkflows.Eachprogrammayencapsulatemarketingassets,SmartLists(i.e.dynamicsegmentationlists)andSmartCampaigns(i.e.workflows).Opportunity-relatedrevenueisattributedtoprogramsbasedonalead’srelationshiptoaprogram,representedeitherbytheAcquisitionProgramleadfield,orbyalead’sprogrammembershipinthatprogram.

ItisacommonpracticeinCRMintegrationforaprogramnottobedirectlyrepresentedinCRMbuttobetranslatedtoanothertypeofobject.Forexample,inMarketo’snativeSFDCsync,theProgramismappedtotheCampaigntype,andtheProgram’smembershipismappedtotheCampaignMembershiptype.

Model

Theschemaforprogramsismostlystatic.Thenumberoffieldsavailableforprogramrecordswillnotchange,buttheChannelsandTagshaveusercustomizablevalues,whichshouldbemodeledifchoosingtoallowcreationofnewprogramsfromCRMtoMarketo.Aprogramwillhavethefollowingfields:

Name Datatype DescriptionId Integer Uniqueidoftheprogramname String User-definednamedescription String User-defineddescriptioncreatedAt Datetime DateofcreationupdatedAt Datetime Dateoflastupdateurl url Urloftheprograminthesubscriptiontype String Typeoftheprogram,oneof:Default,Event,EventwithWebinar,

Nurture,orEmailchannel String Channeloftheprogram.Definesacceptablestatusesforprogram

membershipfolder Object Parentfolderoftheprogram.status String Statusoftheprogram.workspace String Parentworkspaceoftheprogramtags Array Arrayofuser-definedtags.Tagsprovidecustomizable

informationforprograms.costs Array Arrayofcosts.Usedtodefinecostsrelatedtorunningaprogram.

MappingTheCRMtobeintegratedmayhaveanobjecttypewhichmapstotheMarketoprogramnaturally.Programsbroadlyrepresentmarketingcampaigns,andarelinkedtoleadsthroughtheProgramMembershipobjectwhichdefinesthelead’sstatus,andsuccessinthemarketingeffort.

Page 15: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

RelationshipsProgramsarerelatedtoleadsthroughtheProgramMembershipobject.ProgramsalsohaveotherrelationshipstoassetswhicharenotpertinenttothediscussionofCRMintegration.

Accessibility

Toreadprograms,theRead-OnlyAssetpermissionisrequired.ProgramscanbereadthroughBrowsePrograms,GetProgrambyId,GetProgrambyName,andGetProgrambyTagType.

Towriteprograms,theRead-WriteAssetpermissionsisrequired.ProgramscanbecreatedthroughCreateProgram,canbeupdatedthroughUpdateProgram,clonedthroughCloneProgram,andDeletedthroughDeleteProgram.

ProgramMembershipPrimaryKey:Compound[IdofProgram,IdofLead]

Theprimarykeyforprogrammembershipisauniquecompoundkeyoftheidofthelinkedprogramandtheidofthelinkedlead.Theremayonlybeoneprogrammembershiprecordforeachuniquepair.

ProgramMembershiprepresentsalead’srelationshiptoaprogramandtheirstatusinthatprogram.

Model

ProgramMembershiphasastrictschema.InrelationtoCRMsomefieldsmaybeconsideredoptionaldependingoncustomerrequirements.Stream,isExhaustedandnurtureCadencewillonlybepopulatedwhenthemembershiprecordisrelatedtoaNurtureProgram,andmaynothaveexternalrelevance.

Name Datatype DescriptionprogressionStatus String StatusoftheleadintheparentprogramStream String NameofthestreamthattheleadisamemberofnurtureCadence String Cadenceoftheleadinanurtureprogram.EitherNormalor

PausedisExhausted Boolean WhethertheleadisexhaustedinitscurrentNurtureStreamacquiredBy Boolean WhethertheleadwasacquiredbytheparentprogramreachedSuccess Boolean WhethertheleadisinasuccessstatusintheparentprogramreachedSuccessDate Datetime ThedatethattheleadbecamesuccessfulintheprogrammembershipDate Datetime Thedatetheleadbecameamemberoftheprogram

TheidoftheparentprogramandisoftheparentleadarenotexplicitlyreturnedbyGetLeadsbyProgramId,butareinferredbythegivenprogramid,andthereturnedparentlead.

Mapping

Likeprograms,programmembershipmayhaveanaturalmappingtoanexistingobjecttype,butmayalsoneedtoberepresentedbyacustomobjecttypeintheintegratedCRM.

Relationships

Programmembershipisrelatedtoprogramsandleadsbytheirrespectiveids.

Page 16: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Accessibility

ReadingandwritingprogrammembershiprequirestheRead-WriteLeadpermission.ProgrammembershipmaybereadthroughGetLeadsbyProgramId,andwrittenthroughChangeLeadProgramStatus.

StaticListsPrimaryKey:id

StaticListshaveauniquesystem-managedintegeridwhichissetatcreation.

StaticListsrepresentnon-dynamicgroupingsofleadrecordsinMarketo(opposedtoSmartLists,whicharedynamicandupdateautomaticallyasnewleadsmeetthecriteriaorexistingleadsceasetomeetthecriteria).StaticListsareonlycreatedbyusersfromtheUIformarketingpurposes.StaticListsmayormaynotbeimportantinexternalsystemsdependingoncustomerrequirements,andhaveanextremelybroadsetofusecases.StaticListsareusedtoflexiblyrepresentgroupsofpeople.

Model

StaticListshaveastrictschemadefinedbelow.

Name Datatype DescriptionId Integer UniqueIdName String User-definednameDescription String User-defineddescriptionprogramName String NameoftheparentprogramifapplicablecreatedAt Datetime DatethelistwascreatedupdatedAt Datetime Datethelistwaslastupdated

ListMembershipisdefinedasasimplerecordcontainingtheidoftheparentlistandtheidoftheparentlead.

Mapping

StaticListsandtheirmembershipmayhaveanaturalcorollaryinthetargetedCRM.

Relationships

StaticListsarerelatedtoleadsthroughthelistmembershipobjectcontainingtheidofboththeleadandthelist.

Accessibility

TheRead-OnlyLeadspermissionisrequiredtoreadStaticLists.TheRead-OnlyLeadpermissionisrequiredtoreadmembership,andtheRead-WriteLeadpermissionisrequiredtoaddorremovelistmembership.

ListsmaybereadthroughGetListByIdandGetMultipleLists.

MembershipmaybereadthroughGetLeadsbyListIdandwrittenthroughAddLeadstoList,ImportLeadandRemoveLeadsfromList.

Page 17: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Synchronization

ConfigurationTomaintainthebestpossibleperformance,asetofconfigurationoptionsshouldbepresentedtoadministrativeusers.

SynchronizedFieldsNotallfieldsarenecessarytobemappedandsynchronizedbetweenMarketoandanassociatedCRMsystem.Adminusersshouldbepresentedwiththeoptiontoenableordisablesynchronizationofspecificfieldsforeachentitytypewherethisisappropriate(Leads,Companies,Opportunities,CustomObjects).Onlyspecialtyfieldsasdiscussedintheentitiessectionshouldbemandatoryforsynchronization,whileallothersshouldbeoptional.Reducingthenumberofsynchronizedfieldswillimprovesynchronizationperformanceinallcases.

SynchronizedCustomObjectsNotallCustomObjectsarenecessarytoincludeinanassociatedCRMsystem.AdminusersshouldbepresentedwiththeoptiontoenableordisablesynchronizationofCustomObjectsandbemadeawareofanymanualdataextensionwhichneedstooccurintheCRMpriortoenablementofsynchronization.Wherepossible,yourservershouldperformautomaticprovisioningofassociatedCustomObjectsintheCRMforobjectswherebootstrappingfromMarketotoCRMisbeingperformed.Inthecasethatthisisnotavailable,manualandflexiblemappingshouldbepermittedtoavailabletypesandfields.ForCRM-to-Marketosynchronization,thedefinitionshouldbederivedfromthetypeinCRM.

SynchronizedActivityTypesManyactivitytypesdonothaveanyrelevanceinaCRMsystemandshouldnotbesynchronizedever,whileothersmayormaynotbeneededonaclient-by-clientbasis.AdminusersshouldbeabletoselectwhichtypesareandarenotsynchronizedtolimitAPIcallusageandimprovesynchronizationperformance.

BootstrappingConfigurationAnadminuserorimplementeruponinitialconfigurationshouldbeabletoconfigurewhichsetoffieldsandrecordtypesneedtoberetrievedfromMarketo.Anoptionshouldalsobegiventotheseusersallowingthemtoconfiguretheearliestdatefromwhichtosynchronizeforeachparticularrecordtype.Initialsynchronizationtimecanbereduceddramaticallywhentheearliesttimeismorerecent.

SynchronizationIntervalMarketo’snativesynchronizationconnectorsqueueanewbatchofpushesandpullsfiveminutesafterthecompletionofthepreviousbatch.Thiscoversagreatdealofcasesandstrikesanacceptablecompromisebetweenrelativelylowsynchronizationlatency,andutilizationofAPIcalls.Foryoursolution,youshouldbasethesynchronizationintervalbasedonhowmanyAPIcallsatypicalsynchronizationcyclewilltake.ForaccountsprovisionedorrenewedafterMarch2016,thedefaultnumberofAPIcallsperdayis50,000withoptionaladditionalAPIcallspurchasedingroupsof10,000/day.

Page 18: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

ThenumberofchangesthataclientexpectstooccurfortheirleadrecordsandtheirsynchronizedactivitieswillbethegreatestinfluenceonthecumulativenumberofAPIcallswhichwillbeusedinagivenday,andthisshouldinfluenceyourdesign.Yourbaselineforcontinuoussynchronizationwherenochangesareretrievedinanygivencycleshouldnotexceed7,500callsperday.

BootstrappingfromMarketoIfthereisexistingdatainaMarketosubscriptionwhichwillberequiredforfutureuseinthecorrespondingCRMsystem,thenthisdatashouldberetrievedfromMarketofortheprimaryobjectsLeads,Companies,Opportunities,Roles,andSalesPersons.

Thebootstrappercodeshouldbeseparatefromthecontinuoussynchronizationcode,assometimesbootstrappingwillnotbenecessaryatall.BootstrappingfromMarketoshouldonlybeperformediftheclientindicatesthatthereisexistingdataforagiventypeinMarketo.Whereverpossible,theretrievalshouldalsobefocusedtothesmallestpossiblesetofdatarequired.

LeadsThemosteffectivewaytobootstrapallleadrecordsisbyretrievingallNewLeadactivitiesfromthetargetinstance,andthenretrievingallofthecorrespondingleadsbyId.Thetypicalprocessisasfollows:

• CallGetPagingTokenwithasufficientlyearlytimestamp.Thisinformationshouldbeprovidedbytheclient.

• CallGetLeadActivitiesfortheNewLeadactivity,andpagethroughthesetofresults,storingthecorrespondingvaluesofleadIdintheactivity.

• CallGetLeadsbyFilterTypeusingidasthefilterType,with300ofthestoredIdsforeachcall.ThismaybedoneinparallelwiththeretrievaloftheNewLeadactivities.

• Theresultingleadrecordsmaythenbestoredasmapped.

CompaniesThenecessitytobootstrapcompanyrecordsfromMarketowillberareasofthiswritinginApril2016.

CompaniesshouldbebootstrappedonthebasisofthepresenceofexternalCompanyIdonbootstrappedleads.Thetypicalprocessisasfollows:CallGetCompanieswithfilterTypeofidField.filterValuesshouldbesetsofupto300valuestakenfromtheexternalCompanyIdfieldsoftheLeadsalreadyobtained.

OpportunitiesandRolesItshouldbenotedthatitisnotatallidealtobootstrapopportunitiesfromMarketo.Ifthereisanotheravailabledatasourcetoretrievethisdata,itislikelythesourcethatshouldbeused,asMarketodoesnotoriginateOpportunitydatafromwithintheapplication.

BootstrappingOpportunitiesandrolesshouldbedonebasedonthedatapresentintheAddtoOpportunityactivitytype.Thetypicalprocesstobootstrapopportunitiesandrolesisasfollows:

• CallGetPagingTokenwithasufficientlyearlytimestamp• CallGetLeadActivitiesfortheAddtoOpportunityActivityandpagethroughthesetofresults• IftheexternalCreatedDateandupdatedAtfieldsarenotrequired,theRolerecordsmaybe

inferred.

Page 19: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

• ThelistofopportunitiesshouldberetrievedwithGetOpportunitiesbasedontheavailableOpptyIDintheactivityresults,usingidFieldasthefilterType.

• IfrequiredtherolerecordsshouldberetrievedwithGetOpportunityRoles,basedontheleadId,role,andOpptyIdfields,usingdedupeFieldsasthefilterType.

SalesPersonsThenecessitytobootstrapsalespersonrecordsfromMarketowillberareasofthiswritinginApril2016.

SalespersonsshouldbebootstrappedonthebasisofthepresenceofexternalSalesPersonIdonbootstrappedleads.Thetypicalprocessisasfollows:CallGetSalespersonswithfilterTypeofidField.filterValuesshouldbesetsofupto300valuestakenfromtheexternalSalesPersonIdfieldsoftheLeadsalreadyobtained.

CustomObjectsBootstrappingcustomobjectsfromMarketoshouldbecarefullyconsidered.MarketocurrentlydoesnotexposetheabilitytopullincrementalupdatesfromMarketocustomobjectrecords,sotheoptionmaypresentlimitedusefulness.

ThemethodofbootstrappingfromMarketowilldependonthedefinitionoftheobject.For1:Nrelationshipswithleadsoraccounts,therewillonlybeoneobjecttypetoretrieve.ForN:Nrelationshipstherewillbetwotypes.RefertotheEntitiessectionformorespecificinformationonCustomObjectdefinitions.

Thetypicalprocessforretrievingcustomobjectsisasfollows:

• Retrievetheactivitytypeforthecustomobject.Itwillfollowthenamingpattern“Addto{CustomObjectName}”

• CallGetPagingTokenwithasufficientlyearlytimestamp• CallGetLeadActivitiesfortheAddtoCustomObjectactivitytyperetrievedearlier• CallGetCustomObjectsbasedonthekeysretrievedfromtheactivities.Thiswillneedtobe

cross-referencedtothecorrespondingDescribeCustomObjectresult.

ProgramsandMembershipNote:Ifimplemented,itisrecommendedthatmembershipforprogramsonlybesynchronizedonanon-demandbasis.

ToretrieveallprogramsfromMarketo,theclientsimplyneedstocallBrowseProgramsandpagethroughtheresultsbyincrementingtheoffsetparameter.

ToretrieveallmembershipfromMarketo,theclientneedstocallGetLeadsbyProgramIdforeachsynchronizedprogramandpagethrougheachresultset,retrievingtheinformationinthechildmembershipobject

ActivitiesActivitiesmayonlyberetrievedforuptotenactivitytypesatatime,soitisbesttomaintainseparatesynchronizationqueuesforeachsetofuptotentypeswhichhavebeenindicatedforsynchronization.Thetypicalprocessisthis:

• CallGetPagingTokenwiththeearliestdesiredtime

Page 20: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

• CallGetLeadActivitieswithasetofuptotenactivityTypeIdsandpagethroughtheresultsetuntilmoreResultisfalse

• Initiatethepreviousstepforthenextsetoftenactivitytypesifnecessary

ListsandMembershipToretrieveallListsfromMarketo,theclientneedstocallGetMultipleListsandpagethroughtheresultsetuntiltheend.

Toretrievealllistmembership,theclientneedstocallGetMultipleListsbyListIdforeachsynchronizedlist,andpagethroughtheresultset.

RecommendedBootstrappingOrder1. NewLeadActivitiessinceinstancecreation2. LeadRecordsbyleadIdforNewLeadActivities3. CompanyrecordsbyexternalCompanyIdfromLeads4. AddtoOpportunityactivities5. OpportunitiesbyOpportunityIDfromactivities6. OpportunityRolesbyleadId,externalOpportunityID,androlefromactivities7. SalesPersonsbyexternalSalesPersonIdfromLeads8. Otherrecordtypesasrequired

MaintainingSynchronizationThesimplestandmostconsistentwaytomaintaincontinuoussynchronizationistoimplementapollerwhichretrieveschangestorecordsinMarketoandpushesthemtoCRMandthenfromCRMandpushesthemtoMarketo,andthenrepeatsthecycleafterapredeterminedperiodeachtime.

ToretrievechangesfromMarketo,twohighwatermarksmustbemaintained,thefirstforchangestolead/companyfieldswhichhaveoccurredsincethemostrecentlyretrievedchange,andforthesynchronizationcase,andthesecondfortheactivitieswhichhaveoccurredsincethemostrecentlyretrievedleadactivity.Thesearedatetimevalues.Whenretrievingchangesoractivitiesinasubsequentsynchronizationcycle,theexactdatetimeofthemostrecentlycreatedrecordshouldbeused.SinceMarketomaintainsonlyper-secondandnotper-millisecondresolutionfordatetimes,itispossiblethatactivitiesmayoccurwiththesamedatetimeasthehigh-watermark.Thiswillresultinretrievalofduplicateactivitieswhichmaybesafelyignoredbasedontheidoftheactivity.

RecommendedSynchronizationOrder1. CreateandUpdateCompanies2. GetCompanies3. CreateandUpdateSalespersons4. CreateandUpdateLeads5. GetLeads6. GetLeadMergesandDeletions7. GetLeadActivities8. DeleteLeads9. CreateandUpdateOpportunities

Page 21: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

10. CreateandUpdateRoles11. DeleteRoles12. DeleteOpportunities13. DeleteCompanies14. DeleteSalespersons15. CreateandUpdateCustomObjects

LeadsandCompaniesSynchronizationforLeadsandCompaniesismaintainedprimarilyusingtheGetLeadChangesendpointwhichretrievesdatavaluechangerecordswhichoccurafteratimestampgivenbyapagingtokenwhichisretrievedviatheGetPagingtokenendpoint.ThisendpointwillreturnbothNewLeadactivities,whichindicatesthecreationofanewknownleadinMarketo,anddatavaluechangeactivitiesforasetoffieldsgivenintheparametersofthecall.

ThechangeactivitiesshouldbeappliedintheorderofthecreatedDate,fromearliesttolatest,givenintheactivitytotherecordsinCRMwhichcorrespondtotherecordgivenbyleadIdintheactivity.NewLeadactivitiesshouldbeaddedtoaqueueofnewleadrecordswhichneedtoberetrievedbyid,“leadId”intheactivity,usingtheGetLeadsbyFilterTypeendpoint,withidasthefilterType.Thesemayberetrievedupto300atatime.Itisrecommendedtowaituntilthereare300recordstoretrieve,andthentomakethecalltoretrievetheserecords,insteadofcallingwheneverthesebecomeavailable.If,uponreachingtheendofthesetofchanges,therearelessthan300records,thenthesetshouldberetrieved.

Inadditiontochangesandnewleads,inordertomaintainsynchronizationtheMergeLeadandDeleteLeadactivitymustberetrievedinorderaccountforleadrecordswhicharemergedtogether.Themergeactivityindicatesthattworecordshavebeenmergedintoasinglerecord.TheCRMmayormaynotchoosetohonorthemerge/delete,deletethelosingrecordandretrievethechangesfromthewinninglead,oritmaybeignoredandhavea“DeletedinMarketo”flagsettoindicatethattheMarketoLeadIDforthatrecordisnolongervalid.

Forimplementationdetailsonretrievingactivities,seetheactivitiessection.

Aspartofastandardsynchronizationcycle,changesfromtheCRMshouldalsoberetrieved.Ideallyonlyfieldswhichhavebeenupdatedsincethemostrecentsynccycleshouldberetrieved,butthismaynotbepossiblegiventheconstraintsofthesystem.Ifthisisavailable,allthechangesforagivenrecordshouldbeaggregatedintoaleadrecordtobesubmittedtoMarketo.Ifachanges-onlyoptionisnotavailable,thenitisviabletoretrievethewholerecordwithalloftheMarketo-mappedfieldsforsubmissiontoMarketo.

Topushchangesforleadrecords,therearetwooptions,thebulkImportLeadAPIandtheCreate/UpdateLeadsendpoint.ImportLeadallowsaspreadsheetofleadsasrowstobesubmittedintoMarketoforcreationorupdate,whichmaybeupto10MBinsize.Create/Updateleadallowsfortheinputofupto300leadrecordsasJSON.Thereareadvantagestoeitherone.ImportLeadisasynchronousandhasahighertotalthroughput,butrequiresanindividualpollingimplementationtocheckonthestatusoftheimport,anditsharesaqueuewithMarketolistimports,soitispossibleforthecalltoremainenqueuedforasignificantperiodoftime,resultinginagreatdealoflatency.

Page 22: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Create/UpdateLeadoffersmuchfasterfeedback,butwillconsumesignificantlygreaternumbersofAPIcallstoimportlargenumbersofleadsperbatchasitmayonlysubmitupto300recordspercall.

Ineithercase,forincrementalsyncingofupdatesfromCRM,thelookupFieldshouldbespecifiedastheprimarykeyselectedfromtheCRMsystem,andthecreateOrUpdatemodeshouldbeusedwhenusingCreate/Updatelead.ThisallowssharingofthesamequeuebynetnewleadsandleadupdateswhichneedtobepushedintoMarketo.

InthecasethataMarketoLeadislinkedtoacompanyrecordviaexternalCompanyId,commonlyconceptualizedasacontact,thecompanytypefieldsthatwerepartoftheleadrecordarenolongerwriteablethroughtheleadrecordandaredeferredtothelinkedcompanyrecord

CompaniesItisimportanttodeterminewhichfieldsareCompany-typefields,andwhichfieldsareLead-typefields.ThiscanbedonewiththeDescribeCompanyendpoint.AllfieldslistedthereareCompany-typefields,ofwhichmostaremirroredasleadfieldsforunlinkedleads.IfaCompany-typefieldisreflectedinaChangeDataValueoperation,thenthechangeshouldbereflectedagainstthecompanyrecordinCRMifthechangewasmadeagainstaleadwhichislinkedtoacompanyrecordviaexternalCompanyId.Ifnot,thechangeshouldjustbereflectedagainsttheleadrecord.

SalesPersonsNote:Inasingle-CRMcaseSalesPersonrecordsshouldbemanagedbytheCRMitself,sotheserecordsshouldnotbepulledfromMarketoafterthebootstrappingprocess.

SalesPersonrecordsshouldbecreatedordeletedinMarketowheneveracorrespondingeventoccursintheCRMsystem.Thischeckshouldbeperformedbytheintegrationsoftwareuponeverysynccycletoseeifchangesarerequired.Intheeventthatasalespersonrecordrequiresdeletion,allleadswhichhavethatsalesperson’sexternalSalesPersonIdmusthavethatvaluechangedtoanewvalue,orhavethevaluesettonullbeforetherecordcanbedeleted.

SynchronizationofleadownershipshouldbeperformedaspartofleadsynchronizationviatheexternalSalesPersonIdfield.

OpportunitiesandRolesNote:Inasingle-CRMcaseitisexceedinglyrareforOpportunitiesandRolestobecreatedbynon-CRMsources.ItisunlikelytobearequirementtopullthesetypesofrecordsfromMarketo.

OpportunityandrolesrecordsshouldbecreatedordeletedwheneveracorrespondingeventoccursintheCRMsystem.Thisshouldbeperformedaspartofaroutinesynccycle.Ifanopportunityrequiresdeletion,allofitschildrolerecordsmustbedeletedpriortoitsdeletion.Theorderofoperationsforopportunitiesshouldbeassuch:

1. CreateandUpdateOpportunities2. CreateandUpdateOpportunityroles3. DeleteOpportunityRoles4. DeleteOpportunities

Page 23: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

ActivitiesLeadactivitiesareread-onlyaftercreation,andsodonotrequireatwo-wayimplementation.TheyarereadfromMarketoviatheGetLeadActivitiesendpoint,ingroupsofupto10activitytypes.TheendpointacceptsanearliestcreationdateviaapagingtokenwhichisretrievedviatheGetPagingTokenendpoint.ThesetofresultsshouldbepagedthroughuntilthemoreResultparameterintheresponseisreturnedasfalse,andthecorrespondingactivitieswrittentoCRM.Themostrecentdatetimefromtheactivitiesretrievedshouldbestoredasthehighwatermarktobeginthenextsynccyclewith.

Activitiesareusedtoretrieveincrementaldataregardingcustomobjects.

CustomObjectsToperformMarketotoCRMsynchronizationofcustomobjects,the“Addto{CustomObjectName}”activitymustberetrieved,andthecorrespondingrecordsretrievedwiththeGetCustomObjectsendpoint.CustomObjectsmayhavedifferentrelationshiptypeswhichneedtobemodeled.Formoreinformation,pleaseseetheCustomObjectsectioninEntities.

Creation,updates,anddeletionofCustomObjectsshouldbehandledexactlyasopportunitiesorsalespersonsare.

Program-OpportunityAttributionMarketo’smostimportantattributionmodelisbasedontherelationshipbetweenLeads,ProgramsandOpportunities,whereprogramsrepresentsomelevelofunifiedmarketingeffort,andopportunitiesrepresentsalesdeals.Theserelationshipsareinferred,andtheamountofmoneyearnedintheclosureofanopportunityisattributedtotheassociatedmarketingeffort,oneormoreprograms,throughtheassociatedleads’programmembershiprecord.Marketohastwoformsofattribution,First-Touch(FT),andMulti-Touch(MT),whichhaverelatedbutdistinctmethodsofcalculation.Careshouldbetakentoensurethattherelevantfieldsforopportunitiesandleadsaremappedcorrectlytoprovideforproperrevenueattributionofopportunities.

First-TouchAttribution(FT)FirstTouchattributionidentifiestheprogramsthataremosteffectiveatacquiringtherightleads(i.e.newleadsthateventuallyconverttosalesopportunities,pipeline,wonopportunitiesorrevenue).Itdoesbyassigningfullmarketingcreditforthedeal/revenuetotheprogramthatfirstbroughttheleadintothedatabase.ThisisdonebydesignatingAcquisitionProgramandacquisitiondateforaleadrecordandafewotherrequirements:

• TheleadmusthaveanAcquisitionProgram• Thelead'sacquisitiondatemustoccurbeforetheCreatedDateoftheOpportunity• TheleadmustreachProgramSuccessintheProgram

Meetingtheseprerequisiteswillgivefirst-touchattributiontotheprogramforOpportunitiesassociatedtothelead.TheserequirementsaloneshouldpopulatetheCostofOpportunity(basedonProgramCost),PipelineCreated,PipelineCreated(StillOpen),andRevenueExpectedmeasureinaProgramOpportunityAnalysisreport.

TopopulatetheRevenueWonandRevenuetoInvestmentmetrics,theOpportunitymustbeinStage“ClosedWon.”

Page 24: INTRODUCTION - Marketo Developersdevelopers.marketo.com/support/Marketo_CRM_Sync_Reference... · INTRODUCTION This document aims to provide detailed information regarding implementation

Multi-Touch(MT)Multi-TouchAttributionisusedtoindicatetheusefulnessofaprograminmovingknownleadstowardapurchase(i.e.closed-wonopportunities)byspreadingcreditfortherevenueacrossalltheprogramsthatsuccessfullytouchedtheleadsonclosed-wonopportunities.WhereasFTattributionisusedtooptimizetheleadsyou’rebringingintoyourdatabase,MTattributionisusedtooptimizethemovementofthoseleadsthroughthemarketingfunnel.

AnopportunitywillhaveitsPipelineandOpportunitiesCreatedmeasuresattributedviaMTtoaprogramwhenaleadreachessuccessinthatprogrampriortotheCreateddateoftheopportunity.Thisisusedtodeterminetheefficacyofaprogramforgeneratingpotentialdealsfromexistingleads.

AnopportunitywillhaveitsRevenueWon,OpportunitiesWon,andRevenuetoInvestmentattributedtoaprogramviaMTwhenaleadreachessuccessinaprogrambetweentheCreatedDateandtheCloseDateofanOpportunity.Thisisusedtodeterminetheefficacyofaprograminclosingdeals.