> For the complete documentation index, see [llms.txt](https://docs.hockeystack.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hockeystack.com/integrations/crms/dynamics.md).

# Dynamics

HockeyStack's Dynamics integration reads sales data from Microsoft Dataverse in read-only mode. It syncs Accounts, Contacts, Leads, Opportunities, and audit trails.

### Connecting to Dynamics

To connect Dynamics, navigate to Atlas → Ingest → Integrations → Dynamics → Connect. The user who completes the connection must have read access to Accounts, Contacts, Leads, Opportunities, the Audit entity, and EntityDefinitions metadata. See the [Permissions ](#permissions)section below for details.

### Technical Details

#### Objects Synced

| Table         | Logical Name | Purpose                                 |
| ------------- | ------------ | --------------------------------------- |
| Accounts      | account      | Company records                         |
| Contacts      | contact      | Person records with email               |
| Leads         | lead         | Person records with email               |
| Opportunities | opportunity  | Deals with close information            |
| Audit         | audit        | Opportunity stage/status change history |

#### Sync Frequency and Performance

HockeyStack syncs your data daily at 05:00 UTC using an incremental approach. We track changes via the `modifiedon` field in Dataverse, which means only new or recently modified records are pulled on each sync. The first sync is the most resource-intensive, as it retrieves \~4 years of historical data across all objects. After this initial backfill, daily syncs consume minimal API quota since they pull only changed records.

HockeyStack uses paginated OData reads at 1,000 records per page to retrieve your data efficiently. For Audit lookups and batch operations, we request data in groups of 20 IDs at a time. We do not currently use Dataverse change tracking (delta queries) or batch operations.

#### Custom Fields

Any custom fields you have added to Accounts, Contacts, Leads, or Opportunities are automatically discovered and synced into HockeyStack via Dataverse metadata. Custom fields will appear in HockeyStack after the next scheduled sync run.

#### Permissions

The user connecting HockeyStack must have read access to the following:

* Accounts (account entity)
* Contacts (contact entity)
* Leads (lead entity)
* Opportunities (opportunity entity)
* Audit entity
* EntityDefinitions (metadata)

**Important:** Deal progression history is pulled from the Audit table, which means auditing must be enabled on the Opportunity entity, at minimum for the stage and status fields. Without auditing enabled, HockeyStack will not be able to capture your opportunity stage transitions. This is a one-time configuration in your Dynamics environment.

#### Read-Only Integration and Deployment Impact

HockeyStack operates in read-only mode, which means no data is ever written to, modified in, or deleted from your Dataverse environment. The integration does not deploy any solutions, plugins, workflows, or custom tables. When you disconnect HockeyStack, we simply remove the OAuth token on our side—there are no components to uninstall or clean up in Dataverse.

If you enable auditing on the Opportunity entity specifically for this integration, the audit log will consume storage according to your existing Dynamics audit retention policy. This is the only storage impact on your side, and it uses your standard Dynamics infrastructure rather than adding new storage requirements.

***

### FAQs

**Can HockeyStack connect to a Dynamics sandbox?**

Yes. Simply enter your sandbox organization hostname during setup, and HockeyStack will connect with no additional configuration needed.

**Does HockeyStack write or modify data in Dynamics?**

No. HockeyStack only reads data from Dataverse. All operations are read-only, and no records are ever written, modified, or deleted.

**Is auditing required on the Opportunity entity?**

Yes. Auditing must be enabled on the Opportunity entity (at minimum on the stage and status fields) for HockeyStack to capture deal progression history. Without auditing, opportunity stage changes will not be available in HockeyStack.

**How much API quota does HockeyStack consume?**

Yes, HockeyStack does consume Dataverse API calls. The initial sync pulls approximately four years of historical data and is the most API-intensive phase. After that, daily syncs consume minimal quota since they pull only recently changed records.&#x20;

**Why aren't all my contacts and leads being synced?**

HockeyStack syncs only contacts and leads that have an email address, as email is required for identity resolution and downstream analysis in HockeyStack.

**Are opportunity line items synced? How about campaigns and activities?**

No, opportunity line items, campaigns, and activities are not currently synced.&#x20;

**Can I sync custom Dataverse tables?**

Yes, custom tables can be synced, but this requires configuration by the HockeyStack team and is not available as a self-serve option in the settings interface. Please contact your Customer Success Manager to request custom table syncing.

**Is there a field-mapping interface for Dynamics?**

No. Unlike some integrations, Dynamics does not require manual field mapping. Custom fields are automatically discovered and synced into HockeyStack without any configuration needed on your part.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hockeystack.com/integrations/crms/dynamics.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
