All Ideas

Idea Details

Post an Idea
170  Points
Under Point Threshold
Idea hasn't met the 2,500-point review threshold. Give it an upvote or downvote.

Analytic Snapshots - walkthrough

Reports & Dashboards

So, you may have read the marketing page the for the feature and maybe even heard about it at Dreamforce Europe - the time machine enabling you to both look back over time, and to go back to a point in time and look at it.

So - how does it work?

You have to do 3 things:

  1. choose what data you want to snapshot
  2. choose how often you want to keep the data
  3. build a report on that data
  4. create the Analytic Snapshot

ok, there's 4. But 2 of those are just about thinking! You probably do that anyway...

What data do you want to snapshot?

Well, if you want to look at pipeline, you probably want to look at opportunities. You may also want to look at products.

If you want to look at how your support organization is doing, you want to store cases.

If are looking at how your marketing organization is dealing with incoming business, then leads might be a good choice.

You might also have custom objects that change over time - status changes, numbers change, you can snapshot it.

And what data do you want to store in the snapshot?

When looking at the set of data you have, you probably want to capture the data that's changing that you care about - for instance, the opportunity's amount, stage, and custom fields.

You might also want to duplicate the owner information - to make sure visibility on the snapshot data is the same as on the source data.

You might also want to copy across references to other records - for instance, the account for the opportunity, the contact for the case, or the campaign for the leads. This will let users using the snapshot for reporting get the historical data related to this contact or

If you are in EE or UE and can have many snapshots, then you could snapshot multiple levels of data - for instance, not just the top 50 open opportunities, but the products for those opportunities as well.


An example:

I want to store details of open deals, every Monday morning. I forecast and close business monthly, so I want to get a snapshot of how the pipeline is changing during the month. I have the following list of fields on opportunity that I want to copy across:

  • Opportunity Name
  • Opportunity Amount
  • Opportunity Stage
  • Opportunity Close Date
  • A custom picklist tracking the type of install needed - "Installation Type"
  • A custom field for "Number of Installers"

I want to make sure I get owner information and copy it across, and I want the account and opportunity to be linked to the snapshot record, so I can do reports like:

  • Account and deal snapshots
  • Opportunity and deal snapshots

as well as reporting just a snapshot or set of snapshots.

Step 1 - create a CRT

Since the report has to have many lookup fields with IDs, I make a Custom Report Type, with the primary object as Opportunity

I go to the page layout step, and add in fields available through lookups to get the owner ID, the opportunity ID and the account ID. To bring in lookups, you need IDs.

(for information on creating a CRT, see the help and training in salesforce, or CRT-related articles on this site)

crt for snapshot


Step 2 - create the custom object to store the data

The next step is to create the custom object to hold all this data. We are going to need 1 field for each of the fields named above (Opportunity Name, Amount, Stage, Close Date, a Picklist for my Installation Type, and a number field for "number of installers". I will also need:

  • A date field for when the snapshot was run
  • a lookup to Opportunity (to see the current state, and to make the history a related list of opportunities)
  • a lookup to account

For the owner, I'm going to have the owner transfer across, so we don't need a custom field for that.



Step 3 - create a report

Now we make the report - I use my CRT and build a tabular report containing all those columns named above.


and save this report somewhere public


Step 4 - Create the analytic snapshot

Finally the new bit! Almost 2 pages later!

I create an analytic snapshot, and use the wizard to create an analytic snapshot

admin menu screenshot for as

And create a new snapshot:


(here, I have a choice of running user because my user has "modify all data" in this org"). I save this and select to edit the field mappings:


So we've mapped all the fields. You can see the lookups had to have their values taken from the IDs of the corresponding objects.

The last field - snapshot date, I'm going to pick "Execution time" from the "about this snapshot" group of fields. That will give me the time this snapshot was run.

Now we save that.

Now we can schedule (this UI is just like scheduling everything else). We can schedule for every Sunday night, and we'll have the status of the pipeline as of that Sunday.

That's it, just go report on the snapshot!

Reports on the snapshot

Now we can go report on the snapshot. Here's an example of a crosstab with date across, grouped by stage. I can see the changes in stages as the opportunities move around:



Then if I want I can drill around an see the details of the history for that month, then using the lookup to Opportunity, get to the current state of those opportunities.

· Flag

  • Upvotes
  • Downvotes



from AppExchange


Help us to keep IdeaExchange clean by pointing out overlapping ideas. We'll investigate your suggestion and merge the ideas if it makes sense.



Thanks for your merge suggestion. We will review it shortly and merge the ideas if applicable.

Salesforce takes abuse situations very seriously. Examples of abuse include but are not limited to posting of offensive language or fraudulent statements. To help us process your request as quickly as possible, please fill out the form below describing the situation. For privacy and security reasons, the final outcome of an abuse case may not be revealed to the person who reported it.


Thank you for your feedback. We take abuse seriously and will investigate this issue and take appropriate action.