Connect Microsoft Dynamics 365 through Dataverse to bring customer data into CustomerGauge. Choose Multi-Object to import account, contact and survey data together, or Signals to submit customer interaction text for Signal processing.

This guide covers the current integration wizard.

For existing integrations using the unlisted Accounts, Contacts or Surveys types, refer to their setup guide.


Choose your integration type

Type

Use it for

What to prepare

Multi-Object

Import account and contact details together with survey records in one integration. Survey records enter the normal invitation process.

Contact details, the delivery method and survey context. Include an account reference when you want to create or update account information.

Signals

Import text such as customer notes or conversation content for Signal processing, with optional account and contact context. This does not send survey invitations.

A non-empty Source Content field. You can also supply a Survey reference and Survey Completed Date.


Multi-Object can use fields from the main Dynamics object and related objects in the same query. You do not need separate Account and Contact integrations for the data included in that pull.


Before you start

  • You need Administrator access in CustomerGauge.

  • Set up a Dynamics authentication using Microsoft Dynamics How to Authenticate. An existing authentication can be reused.

  • The Dynamics application user needs access to read the objects and fields in your query. Activating the integration also requires write permission on the main Dynamics object, even when flagging is turned off.

  • Prepare a FetchXML query that selects the records and fields you want to import. Your Dynamics administrator can help with logical field names, relationships and permissions.

  • For Multi-Object survey invitations, make sure the relevant survey delivery setup is ready in CustomerGauge. Importing records does not configure your campaigns.


Pull volume: Each run requests up to five pages of 5,000 records, for up to 25,000 records when full pages are returned. Actual volume can be lower because of the query or Dataverse limits. Use separate, appropriately filtered pulls for larger datasets.


Repeat pulls: The current integration does not advance your FetchXML date filters after a run. Define which records are eligible on each run. If you use flagging to exclude previously pulled records, your query must filter on the flag field.


1 Create the integration

  1. Go to Data → Integrations and open Microsoft Dynamics.

  2. Click New Integration.

  3. Choose Multi-Object or Signals to open the Dynamics 365 Integration wizard.


The steps are Settings → Authentication → Pull Query → Pull Mapping → Activation. Turning on Flag pulled records adds Flag Mapping before Activation.

Use Save and Next to save changes and continue, or Next when the step is unchanged.


2 Configure Settings

Enter a descriptive Integration name, then choose a Schedule.

Schedule

Behavior

10 Minutes

Pulls every 10 minutes, throughout the day.

Hourly

Pulls every hour from Start at through Stop at, every day. Stop at must be later than Start at on the same day.

Daily

Pulls once each day at the selected time.

Weekly

Pulls on the selected days at each selected time. Choose at least one day and one time.

Manual

Runs only when you trigger a pull.


All schedule times are UTC. Time selections use 10-minute intervals. For example, an Hourly schedule from 08:20 to 17:20 runs at 08:20, 09:20 and so on through 17:20 UTC.

Turn on Flag pulled records if you want to update fields on the main Dynamics object after a pull. Leave it off if you do not need this write-back.

For initial testing, choose Manual.


3 Select Authentication

Select an existing Dynamics Authentication, or click New Authentication to create one.


A new authentication requires a name and these credentials:

Field

Value

Directory (tenant) ID

The directory ID for the registered Microsoft application.

Client ID

The application ID.

Client Secret

The client secret value.

Dynamics Domain

The environment hostname, such as contoso.crm.dynamics.com, without https:// or an API path.


Use the refresh button if a newly created authentication is not listed. Follow the authentication guide for the Microsoft-side setup.


4 Configure Pull Query

  1. Enter your query in FetchXML.

  2. Leave Endpoint (optional) blank to let CustomerGauge find the endpoint from the main object. If you supply it, use a relative API path beginning with /, for example /api/data/v9.2/contacts.

  3. Click Validate query.

  4. Continue after Query validated appears.


Validation checks the query against Dynamics and loads the available mapping fields. Editing the query or endpoint, or changing authentication, requires validation again.

Include the fields you need from the main object and any related objects. Use explicit aliases for related objects so mapping names are recognizable, such as acct.name. If aliases are omitted, CustomerGauge generates them. Always select the fields offered after validation. See Microsoft’s FetchXML joins guide for relationship syntax.

The following examples illustrate query structure. Adjust them for your environment and business rules before use. Their one-day lookback windows overlap when run repeatedly; they do not prevent the same records from being pulled again.


Multi-Object query example

This example selects recently modified active contacts with an email address and includes their parent account details.

<fetch>
  <entity name="contact">
    <attribute name="contactid" />
    <attribute name="firstname" />
    <attribute name="lastname" />
    <attribute name="emailaddress1" />
    <order attribute="contactid" />
    <filter type="and">
      <condition attribute="statecode" operator="eq" value="0" />
      <condition attribute="emailaddress1" operator="not-null" />
      <condition attribute="modifiedon" operator="last-x-days" value="1" />
    </filter>
    <link-entity name="account" from="accountid"
                 to="parentcustomerid" alias="acct" link-type="outer">
      <attribute name="accountid" />
      <attribute name="name" />
    </link-entity>
  </entity>
</fetch>

Leave Endpoint blank, or use /api/data/v9.2/contacts.


Signals query example

This example selects recent text notes attached directly to contacts. The note text becomes the Signal’s Source Content; the linked contact supplies customer context. It uses the Dynamics Note table and its contact relationship.

<fetch>
  <entity name="annotation">
    <attribute name="annotationid" />
    <attribute name="notetext" />
    <order attribute="annotationid" />
    <filter type="and">
      <condition attribute="notetext" operator="not-null" />
      <condition attribute="createdon" operator="last-x-days" value="1" />
    </filter>
    <link-entity name="contact" from="contactid"
                 to="objectid" alias="person" link-type="inner">
      <attribute name="contactid" />
      <attribute name="firstname" />
      <attribute name="lastname" />
      <attribute name="emailaddress1" />
    </link-entity>
  </entity>
</fetch>


Leave Endpoint blank, or use /api/data/v9.2/annotations. This query does not import attachment contents or notes attached only to other object types. Flagging support must be checked separately for the main object.


5 Configure Pull Mapping

Map each CustomerGauge Field to a Dynamics 365 Field or Value.

  • Select a Dynamics field to use the value from each incoming record.

  • Turn on Fixed value to enter the same value for every record.

  • Click Add for additional mappings.

  • Complete every row or remove unused optional rows. Required rows cannot be removed.

  • Map each CustomerGauge field only once.


The available CustomerGauge fields depend on the selected integration type and your account configuration. Fields marked as required must be mapped; incoming records must also satisfy the field and delivery rules below.


Multi-Object mapping

For the contact and account query above, an email survey setup could use:

CustomerGauge field

Dynamics field or fixed value

Account Reference

acct.accountid

Account Display Name

acct.name

Contact ID

contactid

First Name

firstname

Last Name

lastname

Email

emailaddress1

Delivery Vector

Fixed value: email

Touchpoint

Fixed value: an existing CustomerGauge touchpoint, if used by your survey setup


Use the account reference convention already used in your CustomerGauge account. For example, if existing accounts use a business account number, select and map that field instead of introducing Dynamics record IDs as new account references.

A Multi-Object record needs an email address or phone number and a valid Delivery Vector. Supported values are email, sms, whatsapp and personal-link; the contact details must suit the chosen delivery method. Your account’s additional required fields still apply.

Account creation or updates require an Account Reference. CustomerGauge connects the account, contact and survey data from each imported row. Invitation processing follows your configured survey delivery rules.


Signals mapping

For the notes query above, map Source Content to notetext. Optional contact mappings are Contact ID → person.contactid, First Name → person.firstname, Last Name → person.lastname and Email → person.emailaddress1.

CustomerGauge field

Requirement

Source Content

Required. Map the text to be processed, such as the note body or a transcript stored in a Dynamics text field. The value must be a non-empty string.

Survey

Optional. Supply the reference of an existing CustomerGauge survey used for Signal processing, not a Dynamics record ID or the survey’s display name.

Survey Completed Date

Optional. Supply a supported date value, such as 2026-10-08 14:30:00 or 2026-10-08.

Account and contact fields

Optional context, subject to your account’s field rules. Email and phone are not required by default for Signals; values supplied must be valid.


Signals does not use Campaign ID or Delivery Vector. Source Content is submitted for Signal processing without sending an invitation.

If mapping Survey Completed Date, check the source format. A raw Dynamics timestamp may need conversion to a supported import format before it can be used.


6 Configure optional Flag Mapping

This step appears only when Flag pulled records is on.

  1. Click Add.

  2. Select a Dynamics 365 Field.

  3. Enter the Value to write, or turn on Current date for a suitable date/time field.

  4. Repeat for any other fields, then save and continue.


Each field can appear only once. You must complete at least one flag mapping when flagging is enabled. Choose values compatible with the Dynamics field type.

Only writable fields on the main object are offered. They must be selected in the query or used in a filter on that object. Fields from related objects can be imported, but cannot be updated through Flag Mapping.

For example, if your Dynamics administrator creates a date/time field named new_cg_pulledon on the main object, you can filter for records where it is empty and flag it using Current date. The field name is an example, not a built-in field.


Flagging also requires:

  • The main object’s record ID in the returned data. Include its primary ID field, such as contactid, in the query.

  • Standard tables: support for Dataverse UpdateMultiple.

  • Elastic tables: partitionid included in the query and valid partition information for the records being updated.


A flag records the pull, not the outcome of a survey or Signal. Write-back uses the pulled records and runs separately from record import and subsequent processing. A successful flag does not prove that every row imported successfully, an invitation was sent or a Signal finished processing.


7 Save and activate

In Activation, use Send alert to under Failure Alert to select active CustomerGauge users by email. Add at least one recipient to help your team notice pull or flagging failures.

To start scheduled operation, turn on Activate this integration and click Save. Activation checks the configuration and Dynamics permissions. If an error appears, correct it and save again.

Leave activation off and click Save to keep the integration inactive. A Manual schedule never runs automatically, even when the integration is active.


Run a test pull

After saving the setup, reopen the integration, go to Activation and click Trigger. A saved integration can be triggered while inactive.

Trigger runs a real import using the saved configuration. It can create CustomerGauge records, start survey delivery for Multi-Object and update Dynamics fields when flagging is enabled. Use a query limited to the intended test records.

The trigger confirmation means the run was queued. Check its results before enabling recurring pulls.


Check pull and flagging results

From the integration list, click History to open Pull History. Review the run’s status, trigger, message and timestamps.

  • Files opens the files associated with the pull. Check the corresponding import results for accepted and failed records.

  • Flags opens Flag History. Expand an attempt to inspect its details.


Flag statuses include Open, InProgress, JobComplete, CompletedWithErrors and Failed. Mixed outcomes are possible: some Dynamics records may update while others fail.

A processed pull is separate from successful record import, invitation delivery and Signal processing. Check the relevant CustomerGauge records as well as the integration history.


Troubleshooting

Issue

What to check

Authentication fails

Confirm the tenant ID, client ID, secret value, secret expiry and Dynamics hostname. Check the application user’s roles.

Query validation fails

Confirm the FetchXML syntax, logical object and field names, relationships and read access. A supplied endpoint must begin with / and match the main object.

A mapping field is missing

Include it in the FetchXML and validate again. Use the alias-qualified field offered by the wizard.

Pull Mapping will not continue

Complete required rows, remove incomplete optional rows and resolve duplicate CustomerGauge fields. Recheck mappings after changing the query.

No writable root fields available

Select an updatable field on the main object, or include it in a root-object filter. Related-object fields are not eligible for flagging.

Activation reports missing write permission

Grant the Dynamics application user write permission on the main object. This activation check also applies when flagging is off.

Flagging cannot be enabled

Check UpdateMultiple support for a standard table, or include partitionid for an elastic table. Complete the flag mappings.

The pull returns no records

Check the query filters and the application user’s access. An empty first page is recorded as an empty pull.

The same data is pulled again

Review the query’s eligibility filters. Dates are not automatically advanced, and a flag prevents another pull only when the query excludes flagged records.

A Signal record fails

Check that Source Content is non-empty, any Survey reference exists in CustomerGauge, date values use a supported format and required account-specific fields are present.

The integration does not run automatically

Confirm activation is saved, the schedule is not Manual, and the selected days and times are correct in UTC.


If you need help, provide CustomerGauge Support with the integration name, execution ID and relevant error message from Pull History or Flag History.


Edit or remove an integration

Open the integration from the list to edit its settings. Revalidate after changing authentication or the query, and review both pull and flag mappings.

Turn off Activate this integration and save to stop scheduled pulls. Disable the integration before deleting it. Deletion also removes its pull and flag history, so retain any details needed for an ongoing support case first.