Cant get engagements

I want to retrieve all engagements (CALL, NOTE, EMAIL, MEETING, TASK) associated with a specific contact, including their contents (such as metadata.body) using the HubSpot API.


:white_check_mark: Current setup:

  • All notes and calls are manually logged directly on contacts, not on deals or companies.

  • I’m using a Private App with a Bearer token.

  • The following scopes are enabled in the app:

    • crm.objects.contacts.read

    • crm.objects.engagements.read

    • (as well as nearly every other available scope)


      :outbox_tray: What has been tested (unsuccessfully):

      1. The documented endpoint for retrieving engagements associated with a contact:

      bash

      KopiërenBewerken

      GET https://api.hubapi.com/engagements/v1/engagements/associated/contact/{contactId}/paged?limit=100

      • Response: 200 OK, but always an empty results[] array.

      • Tested with 6 different contact IDs that I manually confirmed (via the HubSpot UI) have notes and calls logged on them.

          #### 2\. Verified contacts in the HubSpot UI:
        
        • The timeline shows manually added notes and call logs.

        • These engagements are not linked to any deals or companies — only the contact.

                  #### 3\. Used a general fallback test to fetch any engagement records in the portal:
          
                  bash
          
                  KopiërenBewerken
          
                  GET [https://api.hubapi.com/engagements/v1/engagements/paged?limit=5](https://api.hubapi.com/engagements/v1/engagements/paged)
          
                  ` `
          
          • Expected: at least a few engagement records returned from the portal

          • Result: also empty

                            ---
            
                            ### 🔍 Additional clarifications:
            
            • :white_check_mark: Token is valid and active (scopes double-checked)

            • :white_check_mark: Headers are correct:

                                        pgsql
              
                                        KopiërenBewerken
              
                                        Authorization: Bearer pat-eu1-xxxx Content-Type: application/json
              
            • :white_check_mark: All contact IDs are valid (double-checked in UI)

            • :white_check_mark: Notes and calls are manually created (not from third-party syncs)

            • :white_check_mark: Using correct HTTP method (GET)

            • :white_check_mark: Tested in both Make.com and external REST tools (Hoppscotch, Postman)

                                        ---
              
                                        ### ❌ What’s not working:
              
              • /engagements/associated/contact/{contactId} always returns empty

              • /engagements/paged also returns empty

              • Even test notes manually created on the contact timeline are not returned

              • No filtering applied, so all engagement types should be included

                                                      ---
                
                                                      ### ✅ What has been ruled out:
                
                • Not a wrong contact ID
                • Not a bad HTTP method or formatting
                • Not an auth issue (200 responses received)
                • Not an association issue (everything is on contact only)
                • Not a Make integration issue (also tested externally)

Hi @NLingeman and welcome, it’s such a pleasure to see you here! :hugs:
Thanks for asking the HubSpot Community!
I appreciate that you took the time to research and test before posting, well done!
I’d like to share for information resources related to the topic, for information:
- Engagements API Overview
- Engagement Details
Also, here are some threads that might be of interest to you:
- The post “Extracting text of tracked "engagement” emails" from @robin_lord
- The solution from @zaklein on this post “Get “Call” Activity from a Specific Contact”
- The solution from @coldrickjack on this post “Get all engagement properties in V3 API”
I’d love to put you in touch with our Top Experts: Hi @sylvain_tirreau, @zach_threadint and @Bortami do you have suggestions to help @NLingeman, please?
Have a wonderful day and thanks so much in advance for your help! :heart:
Bérangère

How are you trying to connect to the API, using Postman or n8n or another similar tool or through a custom-coded API connection?

I’ve tested getting engagements from my HubSpot account via n8n and it appears to work using the default n8n HubSpot node.

There are a few no-code tools, such as Skyvia or Stacksync, that could help with retrieving notes more easily, but it highly depends on your use case. With Skyvia, you can send the data in multiple directions or set up syncs, while with Stacksync, you can send the data into a database (or data warehouse) as well as directly to another HubSpot account, for example (or another CRM).

Skyvia backup:

Stacksync:

Let me know what you think.