Import Groweo® contacts into Microsoft Dynamics 365 via GET API

Groweo’s GET API lets you import contacts stored in Groweo® Contacts into Microsoft Dynamics 365 without transferring data manually.

The integration retrieves contacts from Groweo using an API token and creates or updates the corresponding contacts in Microsoft Dataverse.

The Groweo API is read-only. It cannot be used to create, edit or delete contacts in Groweo, and Groweo does not automatically push contact data to Dynamics 365.

This guide uses Microsoft Power Automate to build the integration.

Before you start

You will need:

  • a Groweo API token
  • a Microsoft Dynamics 365 / Dataverse environment
  • permission to create Dataverse columns and alternate keys
  • access to the required Power Automate premium features
  • a field mapping between Groweo and Dynamics.

1. Get your Groweo API token

Ask your Groweo contact person or Groweo Customer Support for your API token.

The contacts endpoint is:

GET https://engine.groweo.com/engine/api/client-api/contacts

For example:

?page=1&limit=50&populateModuleData=true

Pass the token in the HTTP header:

x-client-api-token: <API_TOKEN>

Test the request before building the integration. This lets you inspect the actual JSON returned by your Groweo environment.

2. Create a Groweo ID column in Dataverse

Dynamics 365 contacts are stored in the Microsoft Dataverse Contact table.

If the Groweo response contains a stable unique contact identifier, create a new Contact column for it, for example:

Groweo ID

with a schema name such as:

new_groweoid

The identifier can then be used to match the same Groweo contact to the same Dynamics record during future synchronisations.

Do not automatically use email as the permanent integration identifier, as an email address can change.

3. Create an alternate key

In Power Apps, open your Dynamics environment and go to:

Tables
→ Contact
→ Keys
→ New key

Create a key using the Groweo ID column.

For example:

Display name: Groweo ID Key
Column: Groweo ID

A Dataverse alternate key allows an external identifier to be used instead of the Microsoft GUID when identifying a record.

This enables an upsert model:

Groweo ID exists
        ↓
update contact

Groweo ID does not exist
        ↓
create contact

4. Create a Power Automate flow

Create a:

Scheduled cloud flow

A typical structure is:

Recurrence
    ↓
HTTP request to Groweo
    ↓
JSON processing
    ↓
contact processing
    ↓
Dataverse

Choose the schedule according to how quickly new Groweo contacts need to appear in Dynamics.

5. Add the HTTP request

Add an HTTP action with:

Method:
GET

and:

https://engine.groweo.com/engine/api/client-api/contacts?page=1&limit=50&populateModuleData=true

Add the header:

x-client-api-token

with your Groweo API token as its value.

The HTTP and Dataverse functionality used by the flow may require premium Power Automate licensing. Check the licensing that applies to your Microsoft environment before implementation.

6. Store the API token securely

Do not expose the Groweo API token directly in the flow.

Power Platform can reference secrets stored in Azure Key Vault through secret-type environment variables. This keeps the actual token in Key Vault rather than storing it as ordinary text in the Power Platform configuration.

You can also use Secure Inputs and Secure Outputs to prevent sensitive values from appearing in flow run history.

Follow your organisation’s own Power Platform and security policies.

7. Inspect the Groweo JSON response

Run the flow with only the HTTP request first.

Inspect the response in Power Automate run history and then add a:

Parse JSON

action based on the actual response.

Do not assume field names that have not been verified from your Groweo environment.

8. Define the field mapping

A possible mapping could include:

Groweo dataDynamics 365 / Dataverse
unique contact identifierGroweo ID
first nameFirst Name
last nameLast Name
email addressEmail
phone numberBusiness Phone or Mobile Phone
job titleJob Title
company namefield or Account relationship based on your data model

The table is illustrative rather than a definition of the Groweo API response.

9. Create or update contacts

There are two common approaches.

Option A: Find the contact and create or update it

Use the Microsoft Dataverse connector to find the contact by Groweo ID.

Then:

contact found
→ Update a row

contact not found
→ Add a new row

Option B: Use Dataverse Web API upsert

With an alternate key, Dataverse Web API can create or update the record with a PATCH request:

PATCH
https://<organization>.crm.dynamics.com/api/data/v9.2/contacts(new_groweoid='GROWEO_ID')

For example:

{
  "firstname": "Example",
  "lastname": "Contact",
  "emailaddress1": "example@example.com",
  "telephone1": "+358401234567"
}

If the record exists, Dataverse updates it. Otherwise, it creates a new record.

The alternate key value does not need to be repeated in the request body when it is already specified in the URL.

10. Handle pagination

The Groweo API uses:

?page=1&limit=50

The flow therefore needs to retrieve subsequent pages when necessary.

In Power Automate, this can be implemented with a Do until loop.

Determine the exact stopping condition from the actual Groweo API response.

11. Avoid unnecessary updates

If the Groweo API provides a reliable last-modified value, it can be used to identify contacts that have changed.

Do not build this logic around a particular Groweo field until you have confirmed that it exists in the API response.

12. Add error handling

A production integration should at least handle:

  • Groweo API errors
  • Dataverse errors
  • failed individual contacts
  • logging and notifications.

Power Automate Scope actions can be used to separate the main integration logic from error handling.

13. Consider API and service limits

Microsoft Dataverse and Power Automate apply connector-, service- and licence-specific limits.

For large contact volumes, row-by-row processing can result in a high number of API calls. In these cases, consider using Dataverse Web API upsert and batch processing rather than multiple connector calls for every contact.

Alternative: an external integration

For larger integrations, you can use an external service such as Azure Functions, Azure Logic Apps or your own Node.js or Python application.

The architecture is then:

Scheduled integration
        ↓
Groweo GET API
        ↓
contact processing
        ↓
Dataverse Web API
        ↓
Dynamics 365

How the integration works

GROWEO®
   │
   │ GET
   ▼
Contacts API
   │
x-client-api-token
   │
   ▼
Power Automate
   │
JSON processing
   │
field mapping
   ▼
Microsoft Dataverse
   │
Groweo ID key
   │
upsert
   ▼
DYNAMICS 365