I want to see how much a leads' score has changed from behavioral activity in an engagement program. Right now I have been going through each lead activity and manually counting.
You can create a smart list with filter Data Value Changed is Person Score with constraint in Past x days, that should get you list of records.
If you are looking a specific score change you can add it as constraints for your filter.
Yes that makes sense, but I am trying to see it in a different way. For example: Person X's lead score has changed +20 from Engagement Program 1 (and only engagement program 1, but person score has changed from any activity).
Wouldn't the filter above show the list of records score from any activity in any program... even if they scored from visiting a web page through a different program and not specifically from that engagement program?
This may be feasible via defining the Reason constraint and picking the campaign which changes the value. E.g. mentioning the campaign which scores the lead on behavior, and in addition applying the filter member of engagement program.
Perhaps advanced reporting in Marketo can give you that insight, but another option i see (probably not a best practice) could be to create a score field for that engagement program and have your internal behavioral scoring campaigns increase that score field when the desired action happens (I don't know, maybe "opens / clicks email in Stream A" ? ).
Something deep inside of me tells me we should avoid creating fields for single marketing campaigns or Marketo campaigns or pieces of content... I know Salesforce has a limit on fields per object, but I'm not aware of object limits in Marketo or performance issues derived from too many fields.
If you really really want to know that with precision, this may be a way...
In fact, recently I have noticed a new feature in Marketo: https://docs.marketo.com/display/public/DOCS/Program+Member+Custom+Fields
Custom fields for programs, which are probably a better choice than adding the field to the Person record, if the information is strictly tied to one campaign (program).
I see there are some important limitations like these fields not being available for tokens (probably a good idea is to use them strictly for operational information or reporting and not for any customer facing information that you may want to share with them).
I have to be honest, I haven't used them myself yet, but they do seem a good option for storing program specific information, like score attained from the program itself for every record in it.