CRM

AEtman
Contributor

Custom Object or Property?

SOLVE

Hi Community! Looking for some advice/workaround to an issue i'm facing in trying to record data of two elements: customers and training results. 

I'm not sure if I should create an Object or just add Properties.

 

In this case I want to register a training and map contacts to it but also store information on both the training and on the contact specific to that training taken. A customer can take more than one training and I need to record information on whether the customer attended, the score results of a test, etc. 

 

- First I thought about creating an Object for training and then associating customers to it. This would enable me to create one record per training and then associate customer to it. By doing this however, I couldn´t add information specific to the person taking the training (i.e.,  I would be able to know if customer X took the training A but I couldn´t add the test score each customer had in that training). 

 

- Then i thought of adding a property for contacts called Training and fill it up there. But then in this case I will miss the ability of tracking individual information on that training and the customer. If customer X takes the same training twice, I can´t overwrite the property "Training Date".  

 

- I also thought of association labels, but since I have more than one property to map this then I believe it's unmanageable. 

 

I hope I made myself clear with this and that someone has managed to get ahold of a solution for this. 

 

Thanks!!! 

0 Upvotes
2 Accepted solutions
trevordjones
Solution
Recognized Expert | Diamond Partner
Recognized Expert | Diamond Partner

Custom Object or Property?

SOLVE

Offhand it seems like the best approach might be a SET of properties on the contact object to track the contacts history of trainings and scores.

 

Property: Recent Training Class

Property: Recent Training Score

Property: Historical Training Class 1

Property: Historical Training Class 1 Score

Property: Historical Training Class 2

Property: Historical Training Class 2 Score

Property: Historical Training Class 3

Property: Historical Training Class 3 Score

 

Then build a contacts based workflow that runs each time "Recent Training Class AND Recent Training Class Score are known.  Be sure to enable re-enrollments.

 

Branch on Historical Training Class 1 is Known

 

If False

 

Copy Recent Training Class to Historical Training Class 1

Copy Recent Training Score to Historical Training Class 1 Score

 

If True

 

Branch on Historical Training Class 2 is Known

 

If False:

 

Copy Historical Training Class 1 to Historical Training Class 2

Copy Historical Training Class 1 Score to Historical Training Class 2 Score

Copy Recent Training Class to Historical Training Class 1

Copy Recent Training Score to Historical Training Class 1 Score

 

If True

 

Branch on Historical Training Class 3 is Known

 

If False

 

...and so on for as many historical courses as you wish to track.  You could also have a "Recent Training Class Date" property to track the date of the current class and copy it forward as well if you want to track the trainings attended, the scores, AND the dates of the trainings. 

 

Hope this helps!

- Trevor
If my post solves your problem, please accept it as a solution.

View solution in original post

franksteiner79
Solution
Key Advisor

Custom Object or Property?

SOLVE

Hi @AEtman 

 

That depends on what you mean by "mapped to each contact" (copying this into a contact property or having the association between the contact and training object). I assume it is the former, which would raise the question - why do you want that information at contact level, meaning what do you want to do with that information - a list, a view, a report?

 

Going down the custom object route would mean you can have a rich training object, and associate multiple instance of that object with contacts. Let's day example:

 

  • you have 100 training object records
  • each record is associated with only one contact
  • let's assume training A was run twice this year with 10 people each, meaning: 
    • 20 of those 100 training object records would have Training A as Type
    • 10 would have date X as training date
    • 10 would have date Y as training date
    • each would be associated to 1 contact
    • each would have its own score
  • That means you can now run reports or create lists on either the training custom object and/or the associated contacts:
    • custom object report of Training A sold/taken this year - all custom object training records where training type = A
    • contact report of contacts who have take training A this year - all contacts who have an association with the custom training object where training type = A
    • list of contacts who passed/failed/achieved a particular score in Training A this year

Does that make sense.

 

Think of the custom training object as your container that is the template for records which then have a relationship to other object records. Selling 20 trainings means you will have 20 custom training object records, not one record with 20 contacts. At least that's how would see it and implement it.

 

To me this is similar to deals and the deal object. If 20 different people by the same product or service you would also have 20 different deals, one for each contact. The deals itself would be pretty similar - have the same product/service, the same deal amount, different close dates, etc. But you would still know sold a certain product/service 20 times.

 

I hope that helps.

Frank

 

Found my comment helpful? Great! Please mark it as a solution to help other community users.


Frank Steiner

Marketeer | HubSpot Expert | CRM Consultant

InboundPro

Let's Talk About Your Project

View solution in original post

6 Replies 6
trevordjones
Solution
Recognized Expert | Diamond Partner
Recognized Expert | Diamond Partner

Custom Object or Property?

SOLVE

Offhand it seems like the best approach might be a SET of properties on the contact object to track the contacts history of trainings and scores.

 

Property: Recent Training Class

Property: Recent Training Score

Property: Historical Training Class 1

Property: Historical Training Class 1 Score

Property: Historical Training Class 2

Property: Historical Training Class 2 Score

Property: Historical Training Class 3

Property: Historical Training Class 3 Score

 

Then build a contacts based workflow that runs each time "Recent Training Class AND Recent Training Class Score are known.  Be sure to enable re-enrollments.

 

Branch on Historical Training Class 1 is Known

 

If False

 

Copy Recent Training Class to Historical Training Class 1

Copy Recent Training Score to Historical Training Class 1 Score

 

If True

 

Branch on Historical Training Class 2 is Known

 

If False:

 

Copy Historical Training Class 1 to Historical Training Class 2

Copy Historical Training Class 1 Score to Historical Training Class 2 Score

Copy Recent Training Class to Historical Training Class 1

Copy Recent Training Score to Historical Training Class 1 Score

 

If True

 

Branch on Historical Training Class 3 is Known

 

If False

 

...and so on for as many historical courses as you wish to track.  You could also have a "Recent Training Class Date" property to track the date of the current class and copy it forward as well if you want to track the trainings attended, the scores, AND the dates of the trainings. 

 

Hope this helps!

- Trevor
If my post solves your problem, please accept it as a solution.

AEtman
Contributor

Custom Object or Property?

SOLVE

Thanks Trevor! I think we'll try this option . I hadn´t thought about the automation, thanks for that tip! 

0 Upvotes
franksteiner79
Key Advisor

Custom Object or Property?

SOLVE

Hi @AEtman 

 

I would recommend using a custom object called "training" or "trainings".

 

When you create your custom object, you do two things:

  1. Define its relationship to other objects, e.g. a training object can be associated with a contact object and nothing else.
  2. Define your custom object properties, as you would for any other object, in your case these could be:
    • Training Type - Dropdown Select - Training A, Training B, Training C
    • Training Date - Date Property
    • Test Score - Number Property
    • Training Category - Dropdown Select - Category 1, Category 2, Category 3
    • Training Name - Freetext

When you say "I couldn´t add information specific to the person taking the training (i.e., I would be able to know if customer X took the training A but I couldn´t add the test score each customer had in that training)." - I am not sure I am not really following or understanding what the problem is.

 

You would the be able to see, contact X hast 2 training objects associated, and these two objects have the following information:

 

  1. Name: Contact x - Training A, Training Type: Training A, Training Date: 11 Nov 2023, Test Score: 90/100, Training Category: Category 1
  2. Name: Contact x - Training B, Training Type: Training B, Training Date: 7 Jun 2023, Test Score: 80/100, Training Category: Category 1

You can now build list or reports based data contained in the custom object - e.g. show me all contacts who had a training in 2023 and took "Training A".

 

I hope that helps.

Frank

Found my comment helpful? Great! Please mark it as a solution to help other community users.


Frank Steiner

Marketeer | HubSpot Expert | CRM Consultant

InboundPro

Let's Talk About Your Project
AEtman
Contributor

Custom Object or Property?

SOLVE

Thanks for your reply Frank! 

 

I acknowledge I wasn´t clear enough. But following your example if I create the object "Training" and define the "Test Score" as a property for that object, how is that mapped to each contact? 

Would´t I have something like :

- Training A , Score 80/100, Associated Contacts: X, Y ,Z ?  

- Training B , Score 50/100, Associated Contacts: A, Y ,Z ? 

 

0 Upvotes
franksteiner79
Solution
Key Advisor

Custom Object or Property?

SOLVE

Hi @AEtman 

 

That depends on what you mean by "mapped to each contact" (copying this into a contact property or having the association between the contact and training object). I assume it is the former, which would raise the question - why do you want that information at contact level, meaning what do you want to do with that information - a list, a view, a report?

 

Going down the custom object route would mean you can have a rich training object, and associate multiple instance of that object with contacts. Let's day example:

 

  • you have 100 training object records
  • each record is associated with only one contact
  • let's assume training A was run twice this year with 10 people each, meaning: 
    • 20 of those 100 training object records would have Training A as Type
    • 10 would have date X as training date
    • 10 would have date Y as training date
    • each would be associated to 1 contact
    • each would have its own score
  • That means you can now run reports or create lists on either the training custom object and/or the associated contacts:
    • custom object report of Training A sold/taken this year - all custom object training records where training type = A
    • contact report of contacts who have take training A this year - all contacts who have an association with the custom training object where training type = A
    • list of contacts who passed/failed/achieved a particular score in Training A this year

Does that make sense.

 

Think of the custom training object as your container that is the template for records which then have a relationship to other object records. Selling 20 trainings means you will have 20 custom training object records, not one record with 20 contacts. At least that's how would see it and implement it.

 

To me this is similar to deals and the deal object. If 20 different people by the same product or service you would also have 20 different deals, one for each contact. The deals itself would be pretty similar - have the same product/service, the same deal amount, different close dates, etc. But you would still know sold a certain product/service 20 times.

 

I hope that helps.

Frank

 

Found my comment helpful? Great! Please mark it as a solution to help other community users.


Frank Steiner

Marketeer | HubSpot Expert | CRM Consultant

InboundPro

Let's Talk About Your Project
AEtman
Contributor

Custom Object or Property?

SOLVE

Hi Frank! Thanks for all that detailed explanation, all is clear now. 

 

You were talking about associatiing one contact per training record, I was thinking of having one Record per Training type and associating all contacts to that record. 

 

I see now what you are proposing and it makes sense! Thanks for the clarification! 

0 Upvotes