Outbound Wiki

Outbound CRM data model

Designing the CRM objects, relationships and fields needed to represent companies, contacts, opportunities and outbound work.

An outbound CRM data model should let a rep move from a qualifying signal to a revenue outcome without losing the company, person, relationship, or action that explains the movement. Build the relationship map before the field list, then define state changes and the recovery path for missed updates. The relationships among contacts, leads, accounts, and deals determine what you can report on, automate, and move through the pipeline.1 A model can look complete and still fail when one opportunity has multiple contacts with different roles, which forced one team to rebuild its model.2

Build the model in work order

Use this order to keep field choices attached to the work they support. Move on only when each stage has a clear answer.

Stage What you are trying to learn Example question
Map records Which concepts need their own records, and which can remain fields? Which object owns this fact?
Connect records How companies, contacts, leads, opportunities, campaigns, and activities relate Can one opportunity show each person's role?
Define the field contract What each field controls, who maintains it, and when it changes What action changes when this value changes?
Preserve attribution How each outbound event connects to the eventual outcome Can we trace this outcome to its first signal?
Reconcile status How a message state reaches the CRM and how missed updates are recovered What happens when a callback is missed?

Start with records and relationships

Draw the records and their relationships before configuring fields. Each relationship should show what can happen next and what must remain visible after a handoff.

CRM objects represent customer and business process information, and each object contains records that can connect to records in other objects.34 Properties store record information, while activities track interactions.5 Keep durable facts separate from the calls, messages, replies, and meetings that happen around them.

Decide whether your company record is called a company or an account, then document how a contact reaches it and how both reach an opportunity. A direct contact to opportunity relationship that needs role detail requires Contact Roles. In Salesforce, Contact Roles specify details about the person and allow that person to be appointed as the decision-maker for an opportunity.6

Test the relationship with a multi-person deal before adding automation. Check whether each contact can have a different role, whether the opportunity can show those roles, and whether reports can count the opportunity once without losing the people involved.

Define the field contract

A field earns its place when a team can say what decision it changes. Write down that decision, the allowed values, who or what updates the field, and which report or automation reads it.

Field design determines what the CRM can do downstream.7 CRM fields can hold a contact's email and title, a company's industry and size, or a deal's stage and value.8 Agree on the field structure through process definition and internal discussion before configuration begins.9

Preserve values across lifecycle changes. A lead field can be mapped to a corresponding opportunity field so its value carries over during lead conversion.10 When you need transformed outbound attributes, derive them from the listed objects and record where each value comes from.11

Capture notes around the decision the record must support. Operational questions produce usable fields, while a generic request to extract details produces generic records.12 Those fields can drive routing, reporting, and follow-up without manual detective work.13

Outbound attribution needs a chain that survives movement between records. Keep it attached to stable identities so a report can explain both the action and the outcome.

Build the chain from the qualifying signal through the audience decision, campaign, seller action, reply, meeting, opportunity, and revenue outcome.14 Document how contacts connect to accounts and opportunities before asking reports to measure conversion.15

Treat campaign associations as an explicit constraint. An outbound campaign can be associated with only one customer profile or one knowledge base at a time.16 If your operating model needs wider reuse, represent that through separate records or a documented relationship instead of leaving the rule implicit.

Keep opt out state separate from opt out category. The Email Logs object determines whether a customer has opted out of emails.17 The Opt-Out Email object determines the category of mail for which the contact opted out.18 This separation lets routing and suppression rules answer different questions without overwriting one another.

Make message status recoverable

A message status is operational data, so design for the moment when an external update does not arrive. Give the CRM a fast update path and a defined reconciliation path.

The CRM needs current message status for visibility, reporting, and operational monitoring.19 Providers communicate status transitions to the CRM through HTTP POST webhooks sent to a registered endpoint.20 Outbound messaging pipelines can develop stale CRM records when network failures, unavailable endpoints, or exhausted provider retries interrupt those callbacks.21

Use the webhook as the primary path. Receive it at a REST endpoint, publish an internal event, and update the record asynchronously.22 Add a scheduled polling job that finds records left in a transitional status after a configurable interval and checks the provider status API to reconcile them.23

Define the message payload with the same care as the CRM record. An outbound message contains the fields selected during its creation.24 For a lead outbound message, one documented field set includes Id, FirstName, LastName, Company, Email, and Phone.25

Set creation and identity rules

Creation rules determine when a record becomes reportable and which handoffs can happen without manual repair. Write those rules per object and test them against the outbound lifecycle.

One configuration example creates account and contact records automatically while creating the opportunity manually.26 A lead entity can represent a potential client before that person becomes an account, contact, and opportunity in Dynamics CRM.27 Use your own conversion point, then state exactly which fields, relationships, and attribution events must survive it.

Carry identity across systems and organizations. The crmOrgId field contains the CRM organization or tenant ID and disambiguates which organization a crmId belongs to in a multi-org setup.28 When an integration exposes CRM Account ID, that field exists on both contact and account records.29

Validate before configuration

Run the model through realistic record journeys on paper first. The test is complete when each journey produces one clear record path, one clear status path, and a reportable outcome.

Walk through a new lead, a contact joining an existing account, multiple contacts on one opportunity, a campaign response, an opt out by category, a lead conversion, and a message whose callback fails. For each journey, write the record created, the relationship added, the fields changed, and the event that should update the CRM.

Use a data model overview or relationship view to inspect how objects, properties, and activities connect before setting up imports, reports, and automation.30 Check how each object, activity, and property is used so unused fields and broken relationships are visible before launch.31

What not to do

  • Do not start configuring by clicking through the CRM before thinking through the model.32
  • Do not rely exclusively on webhooks, because a failed callback can leave messages permanently stuck in an intermediate status.33

Sources

  1. 1
    “Contacts vs. Leads vs. Accounts vs. Deals: the relationships between these objects determine what you can report on, what you can automate, and how your pipeline works.”
  2. 2
    “The second rebuild happened because they discovered, mid-Q2, that their contact model couldn't support multiple contacts per deal with different roles.”
  3. 3
    “In your HubSpot CRM, objects represent your customers and business process information (e.g., contacts, deals).”
  4. 4
    “Each object has individual records which can be associated with records of other objects (e.g., Lorelai Gilmore is a contact associated with the company The Dragonfly Inn).”
  5. 5
    “On each record, information is stored in properties and interactions are tracked through activities.”
  6. 6
    “In order for a Contact to have a direct link to an Opportunity in Salesforce, we must use Contact Roles. These roles specify relevant details regarding the person and make it possible to appoint them as the ‘decision-maker’ for an Opportunity, determining their importance.”
  7. 7
    “CRM fields are the attributes on records; their design decides what the CRM can do downstream.”
  8. 8
    “CRM fields are the individual data attributes on records: a contact's email and title, a company's industry and size, a deal's stage and value, and every custom property a team bolts on.”
  9. 9
    “Collectively agreeing upon the fields and structure in your CRM requires a high level of discussion, process and internal alignment.”
  10. 10
    “Create a user lookup field, let’s call it Partner Sales Contact, on the lead and opportunity objects, and map the lead field to the opportunity field so the value carries over during the lead conversion process.”
  11. 11
    “Attribute values for an outbound data transformation can be derived from the following objects:”
  12. 12
    “This is why turning notes into usable CRM data begins with operational questions, not a generic prompt asking AI to “extract key details.” Generic prompts produce generic records. Nobody needs more of those.”
  13. 13
    “Turning messy lead notes into usable CRM data is practical AI work. It removes copy-paste labor, gives reps a clearer starting point, and gives RevOps fields that can drive routing, reporting, and follow-up without detective work.”
  14. 14
    “Build outbound attribution as an event chain: preserve the qualifying signal, audience decision, Play or campaign, seller action, reply, meeting, opportunity, and revenue outcome on stable CRM identities.”
  15. 15
    “Document how contacts associate with accounts and opportunities.”
  16. 16
    “An Outbound campaign can only be associated to one customer profile or one knowledge base at a time.”
  17. 17
    “This dataset is created on the Email Logs object and determines if a customer has opted out of emails.”
  18. 18
    “The third dataset is created on the Opt-Out Email object which determines the category of mail for which the contact has opted-out.”
  19. 19
    “The CRM system requires accurate, up-to-date status on each message for agent visibility, reporting, and operational monitoring.”
  20. 20
    “The provider communicates these status transitions to the CRM via HTTP POST callbacks – webhooks – to a registered endpoint.”
  21. 21
    “Outbound enterprise messaging pipelines face a fundamental reliability challenge: delivery status callbacks (webhooks) from messaging providers are subject to network failures, endpoint unavailability, and provider-side retry exhaustion, resulting in stale status records in the CRM system of record.”
  22. 22
    “The primary path uses a real-time webhook received by a REST endpoint, which publishes an internal event for asynchronous record update.”
  23. 23
    “The fallback path uses a configurable scheduled polling job that detects records still in transitional status after a configurable interval and queries the provider’s status API directly to reconcile state.”
  24. 24
    “This message includes the fields you selected during the creation of the outbound message.”
  25. 25
    “Lead fields to send: Id, FirstName, LastName, Company, Email, and Phone.”
  26. 26
    “For example, the account and contact records might be set for automatic creation, whereas the opportunity record is set for manual creation.”
  27. 27
    “In Dynamics CRM, the Lead entity is designed for potential clients that are qualified by a salesperson prior to becoming Accounts, Contacts, and Opportunities.”
  28. 28
    “Organization (tenant) ID of the CRM system. Required in multi-org CRM setups to disambiguate which org the crmId belongs to.”
  29. 29
    “Tip: In the event that you have a CRM integration set up, a field called CRM Account ID will exist for both contacts and accounts.”
  30. 30
    “The data model overview displays the relationships between your account's unique objects, properties, and activities, which can help you better set up imports, reports, and automation moving forward.”
  31. 31
    “You can also view information about how your objects, activities, and properties are used.”
  32. 32
    “The core lesson: every CRM implementation that falls apart does so because someone started clicking before thinking.”
  33. 33
    “A naive single-path architecture that relies exclusively on webhooks leaves a population of messages permanently in an intermediate state when callbacks fail.”