# How to Integrate Retool with Hootsuite

- Tool: Retool
- Difficulty: Intermediate
- Time required: 30 minutes
- Last updated: April 2026

## TL;DR

Connect Retool to Hootsuite using a REST API Resource with OAuth 2.0 authentication and the Hootsuite API base URL (https://platform.hootsuite.com/v1/). Build a social media command center that views scheduled posts, monitors social streams, tracks team approval workflows, and combines Hootsuite data with CRM records to give your team full social context in one internal tool.

## Build a Hootsuite Social Media Command Center in Retool

Hootsuite's native dashboard excels at individual social media management, but marketing operations teams often need to cross-reference social activity with CRM data, track team approval workflows alongside other operational data, or build executive social reporting that combines Hootsuite metrics with business KPIs stored in internal databases. Retool bridges this gap by providing a customizable interface layered on top of Hootsuite's Platform API.

With a Retool-Hootsuite integration, you can build a unified social operations panel that displays all scheduled posts across profiles with their approval status, a social analytics dashboard that shows engagement trends alongside sales data from your CRM, or a content calendar that combines Hootsuite's scheduled posts with campaign milestones tracked in your project management database. Social media managers get the operational context they need — account health, team workload, campaign attribution — without switching between Hootsuite and other tools.

Hootsuite's Platform API covers message scheduling, social profile management, team member access, analytics, and stream monitoring. All API requests proxy through Retool's server-side infrastructure, keeping OAuth tokens secure. The integration is particularly powerful for agencies managing multiple client Hootsuite accounts, where a single Retool dashboard can aggregate posting performance and team activity across accounts.

## Before you start

- A Hootsuite account with Admin access to register developer applications
- A Hootsuite developer app registered at https://hootsuite.com/developers/registered-apps with client ID and client secret
- A Retool account with permission to create Resources
- Familiarity with OAuth 2.0 Authorization Code flow basics
- At least one social profile connected to your Hootsuite account

## Step-by-step guide

### 1. Register a Hootsuite developer application and obtain OAuth credentials

To connect Retool to the Hootsuite Platform API, you need OAuth 2.0 client credentials from a registered Hootsuite developer application. Log in to Hootsuite and navigate to the Developer Portal at https://hootsuite.com/developers. Click 'My Apps' in the navigation, then click 'Create New App'. Fill in the application name (e.g., 'Retool Integration'), description, and application URL (use your Retool instance URL or any valid HTTPS URL). For the Redirect URI, enter your Retool instance's OAuth callback URL — for Retool Cloud this is typically https://oauth.retool.com/oauthcallback or the specific callback shown in the Retool Resource configuration panel. Select the OAuth scopes your integration requires: at minimum request 'offline' (for refresh tokens), 'read:messages' (to read scheduled posts), 'write:messages' (to schedule posts), 'read:analytics' (for analytics data), and 'read:social_profile' (for profile information). After saving, Hootsuite displays your Client ID and Client Secret — copy both and store them securely. These are the credentials you will configure in Retool. Note that Hootsuite's API access requires a plan that includes API access — verify your Hootsuite plan includes developer API access before proceeding.

**Expected result:** You have a registered Hootsuite developer app with a client ID, client secret, and redirect URI configured. The app has appropriate OAuth scopes selected.

### 2. Create the Hootsuite REST API Resource in Retool with OAuth 2.0

In Retool, click the Resources tab in the left sidebar and then click Add Resource. Scroll through the resource types and select REST API. Name the resource 'Hootsuite API'. In the Base URL field, enter: https://platform.hootsuite.com/v1 — this is the base URL for Hootsuite's Platform API. Do not include a trailing slash. Scroll down to the Authentication section and select OAuth 2.0 from the authentication type dropdown. In the Authorization URL field, enter: https://hootsuite.com/oauth2/auth. In the Access Token URL field, enter: https://hootsuite.com/oauth2/token. Enter your Client ID and Client Secret from the developer app you registered in the previous step. In the Scopes field, enter: offline read:messages write:messages read:analytics read:social_profile (space-separated). Set the OAuth flow to 'Authorization Code'. Retool will display the OAuth callback URL to use — verify this matches what you configured in the Hootsuite developer app's Redirect URI. Click 'Connect' or 'Authenticate' to initiate the OAuth flow. A browser window opens for you to authorize the app against your Hootsuite account. After authorizing, Retool receives and stores the access and refresh tokens. Click Save Changes to finalize the resource configuration.

**Expected result:** A Hootsuite API resource appears in your Resources list and shows a green connected indicator after OAuth authorization completes.

### 3. Query Hootsuite social profiles and scheduled messages

With the resource created, open or create a Retool app. In the Code panel at the bottom of the editor, click the + button to add a new query. Select your Hootsuite API resource. First, create a query named 'getSocialProfiles' to list all connected social profiles. Set the Method to GET and the Path to /socialProfiles. This returns all social profiles connected to the authenticated Hootsuite account, including their IDs, names, and social network types. Run the query and inspect the Results panel to see the profile data. Next, create a second query named 'getScheduledMessages'. Set Method to GET and Path to /messages. Add URL parameters to filter: set key 'state' to 'SCHEDULED' to retrieve only scheduled posts, and 'limit' to {{ 50 }} to control result size. Add a parameter 'socialProfileIds' bound to the ID of a selected profile (once you have a profile selector component). Add a JavaScript transformer in the query's Advanced tab to reshape the message data for display. Name fields clearly: id, text (the post content preview), scheduledSendTime (formatted with toLocaleString), socialProfileIds, and state. Set the 'getSocialProfiles' query to run when the app loads.

```
// Transformer: reshape Hootsuite messages for display
const messages = data.data || [];
return messages.map(msg => ({
  id: msg.id,
  text_preview: (msg.text || '').substring(0, 120) + ((msg.text || '').length > 120 ? '...' : ''),
  scheduled_time: msg.scheduledSendTime
    ? new Date(msg.scheduledSendTime).toLocaleString()
    : 'Not scheduled',
  state: msg.state,
  profile_ids: (msg.socialProfileIds || []).join(', '),
  created_by: msg.ownerType || 'Unknown'
}));
```

**Expected result:** The getSocialProfiles query returns all connected profiles, and the getScheduledMessages query returns a list of scheduled posts formatted for display in a Table component.

### 4. Build the social media command center UI

Now build the dashboard interface. From the component panel on the right side of the Retool editor, drag a Select component to the top of the canvas. Name it 'profileSelect'. Set its data source to {{ getSocialProfiles.data.data || [] }}, its value to {{ item.id }}, and its label to {{ item.socialNetworkType + ': ' + item.socialNetworkUsername }}. Drag a Table component below the select. Set its Data to {{ getScheduledMessages.data }}. Configure columns: text_preview (as Text, wide), scheduled_time (as Text), state (as Tag with color mapping: SCHEDULED = blue, SENT = green, FAILED = red), and profile_ids. Bind the getScheduledMessages query's socialProfileIds parameter to {{ profileSelect.value }} so it filters by selected profile. Add a Refresh button that triggers getScheduledMessages. Below the table, add a detail panel that shows when a table row is selected. Display the full post text using a Text component bound to {{ scheduledMessagesTable.selectedRow.text_preview }}. Add a Button labeled 'Schedule New Post' that opens a Modal. Inside the modal, add a Multiline Text Input for the post content, a DateTime Picker for the scheduled send time, and a multi-select for profile IDs. Create a 'createMessage' query with Method POST, Path /messages, and a JSON body structured with the socialProfileIds array, text, and scheduledSendTime fields. Connect the modal's Submit button to trigger the createMessage query, then on success trigger getScheduledMessages to refresh the table and show a success notification.

```
{
  "socialProfileIds": {{ JSON.stringify(profileMultiSelect.value) }},
  "text": {{ JSON.stringify(postTextInput.value) }},
  "scheduledSendTime": {{ JSON.stringify(scheduledDatePicker.value) }},
  "tags": []
}
```

**Expected result:** A social media command center dashboard displays scheduled posts filterable by social profile, with a detail panel and post scheduling form for creating new messages directly from Retool.

### 5. Add Hootsuite analytics and combine with CRM data

To build analytics views, create a query named 'getAnalytics'. The Hootsuite Analytics API endpoint for retrieving metrics is at /analytics/posts — however, accessing analytics requires specific API plan access and uses a POST request with a filter body specifying metrics, date ranges, and profile IDs. Set the query Method to POST, Path to /analytics/posts, and Body Type to JSON. The request body specifies the date range (startDate, endDate as ISO 8601 timestamps), socialProfileIds array, and the metrics array with values like 'IMPRESSIONS', 'ENGAGEMENT', 'CLICKS'. Add a Date Range Picker component to the app and bind the startDate and endDate in the query body to its values. Create a JavaScript transformer that processes the analytics response into a flat array suitable for Retool Charts. Add a Chart component to the canvas, set its type to Bar or Line, and bind its data to the analytics transformer output. To combine social analytics with CRM data — a powerful pattern for marketing teams — add a second Resource (e.g., a PostgreSQL database with your CRM data) and create a companion query that retrieves campaign records by date range. Use a JavaScript query in Retool to join the two datasets in memory: match social metrics dates to campaign dates and calculate social ROI or attribution. For complex multi-source integrations involving multiple Resources and custom data joining logic, RapidDev's team can help architect and build your Retool social operations solution.

```
// Transformer: flatten Hootsuite analytics response for Chart display
const analyticsData = data.data || [];
const metrics = [];

analyticsData.forEach(profile => {
  (profile.data || []).forEach(day => {
    metrics.push({
      date: day.dimensions?.time?.startDate || day.date,
      profile_id: profile.socialProfileId,
      impressions: day.metrics?.IMPRESSIONS || 0,
      engagements: day.metrics?.ENGAGEMENT || 0,
      clicks: day.metrics?.CLICKS || 0
    });
  });
});

return metrics.sort((a, b) => new Date(a.date) - new Date(b.date));
```

**Expected result:** The dashboard shows social analytics Charts for impressions and engagement alongside CRM campaign data, providing marketing teams with a unified social ROI view.

## Best practices

- Create a dedicated Hootsuite account (e.g., retool-integration@yourcompany.com) with appropriate permissions for the Retool OAuth connection, separate from personal accounts, to prevent disruptions when employees leave
- Store the Hootsuite client secret in Retool Configuration Variables as a secret (Settings → Configuration Variables) rather than directly in the resource configuration for easier rotation
- Request the 'offline' OAuth scope to receive refresh tokens — without it, your Retool resource will fail after every access token expiration (typically 1 hour) and require manual re-authentication
- Add query caching (30-60 seconds) to profile list and scheduled message queries to avoid excessive API calls when multiple team members use the dashboard simultaneously
- Use Retool Workflows to build scheduled reports that aggregate Hootsuite analytics on a nightly basis and store summaries in Retool Database — this keeps your dashboard fast and avoids Hootsuite API rate limits
- Scope your OAuth app permissions to the minimum required — if your use case is read-only reporting, request only 'read:messages' and 'read:analytics', not 'write:messages', to limit the blast radius of any credential compromise
- Implement post scheduling confirmation modals in Retool before triggering createMessage queries — this prevents accidental social media posts to production accounts during development or testing

## Use cases

### Build a social media approval workflow and content calendar dashboard

Create a Retool panel that displays all pending and scheduled Hootsuite posts across social profiles, filterable by profile, campaign tag, and approval status. Show the post content, scheduled time, author, and approval state in a Table component. Add a review panel where social media managers can approve or reject posts with comments, triggering Hootsuite API updates. Include a calendar view showing posting frequency across the week to identify gaps in the content schedule.

Prompt example:

```
Build a Retool dashboard showing all Hootsuite scheduled messages across profiles in a Table with columns for profile name, post preview, scheduled time, author, and approval status. Add filter dropdowns for profile and status. Include an approve/reject panel for the selected post that updates the message status via the Hootsuite API.
```

### Build a social analytics and engagement tracking panel

Create a Retool analytics dashboard that pulls Hootsuite analytics data for key social metrics — impressions, engagements, click-throughs, and follower growth — across all connected social profiles. Display trends using Chart components with date range filters. Combine Hootsuite analytics with campaign data from your internal database or CRM to show social ROI alongside revenue metrics, giving leadership a single view of how social activity drives business outcomes.

Prompt example:

```
Build a Retool analytics panel that queries Hootsuite's analytics API for impressions and engagement data across all social profiles, displays Charts for weekly trends, and joins the data with campaign records from a PostgreSQL database to show social attribution per campaign. Include a date range picker and profile selector.
```

### Build a multi-account agency management dashboard

Create a Retool panel for social media agencies managing multiple client Hootsuite accounts. Display posting velocity, engagement rates, and pending approvals across all client accounts in a single Table. Use Charts to compare account performance side by side. Add a post scheduling form that allows team members to schedule posts to any managed profile directly from Retool, reducing context switching between Hootsuite accounts.

Prompt example:

```
Build a Retool agency dashboard that queries Hootsuite for all social profiles across managed accounts and displays them in a grouped Table showing profile name, network, follower count, and posts scheduled this week. Add a post scheduling form that sends a new message to the selected profile via the Hootsuite API, with fields for content, scheduled time, and profile selection.
```

## Troubleshooting

### OAuth 2.0 authentication fails with 'redirect_uri mismatch' error during Retool resource configuration

Cause: The Redirect URI configured in the Hootsuite developer app must exactly match the OAuth callback URL that Retool uses. Even a trailing slash difference or HTTP vs HTTPS mismatch causes this error.

Solution: In the Retool Resource configuration panel for the Hootsuite API, find the OAuth callback URL displayed by Retool (typically https://oauth.retool.com/oauthcallback for Retool Cloud). Copy this URL exactly and paste it into the Redirect URI field in your Hootsuite developer app settings at https://hootsuite.com/developers/registered-apps. Save the Hootsuite app settings and retry the OAuth flow in Retool.

### API returns 403 Forbidden when querying analytics endpoints

Cause: Hootsuite's Analytics API requires specific plan access (Enterprise or Team plans) and the 'read:analytics' OAuth scope. Accounts on lower-tier plans or apps missing the analytics scope receive 403 errors.

Solution: Verify your Hootsuite account plan includes API analytics access. In the developer app settings, confirm that 'read:analytics' is included in the requested scopes. If you recently added the scope, you must re-authorize the Retool resource (delete the resource and re-create it, or use the 'Reconnect' option) so the new scope is included in the OAuth token.

### Scheduled messages query returns an empty array despite posts existing in Hootsuite

Cause: The /messages endpoint filters by state parameter. If the state parameter is missing or set to an incorrect value, or if the socialProfileIds parameter does not match any profiles accessible to the authenticated user, the API returns an empty result set.

Solution: Remove the socialProfileIds filter temporarily and set state to 'SCHEDULED' only to verify the base query returns results. Use the getSocialProfiles query to confirm the profile IDs available to the authenticated account, and ensure the IDs passed to socialProfileIds match those returned by /socialProfiles. Check the raw API response in Retool's Results panel for any 'errors' array that may contain additional detail.

### Access token expires and Retool queries return 401 Unauthorized after initial successful connection

Cause: Hootsuite access tokens have a limited lifespan. If the OAuth token refresh is not working correctly in Retool (due to the 'offline' scope being missing or the refresh token URL being incorrectly configured), the token expires and is not automatically renewed.

Solution: Verify the 'offline' scope is included in the Hootsuite developer app's scope list and in the Retool resource's Scopes field. In Retool Resource settings, confirm the Access Token URL is set to https://hootsuite.com/oauth2/token — this is also the Refresh Token URL. If the token is already expired, use the 'Reconnect' option in the Retool Resource settings to re-initiate the OAuth flow and obtain fresh tokens.

## Frequently asked questions

### Does Retool have a native Hootsuite connector?

No, Retool does not have a native Hootsuite connector. You connect via a REST API Resource using Hootsuite's Platform API (https://platform.hootsuite.com/v1/) with OAuth 2.0 authentication. This requires registering a developer application in the Hootsuite App Directory to obtain client credentials.

### Which Hootsuite plan is required to use the API?

Hootsuite API access is available on Professional, Team, Business, and Enterprise plans. The free plan does not include API access. Analytics API endpoints require Team, Business, or Enterprise plans. Check your current Hootsuite plan and contact Hootsuite support if you need to confirm which API endpoints your plan includes.

### Can I schedule social media posts directly from Retool to Hootsuite?

Yes. Using the Hootsuite Platform API /messages endpoint with a POST request, you can create scheduled messages from Retool. You need to specify the socialProfileIds array, the post text, and the scheduledSendTime as an ISO 8601 timestamp. Build a Form component in Retool for the post details and connect the Submit button to trigger the createMessage query. Ensure your OAuth app has the 'write:messages' scope.

### How do I handle multiple Hootsuite accounts in one Retool app?

Create a separate Retool REST API Resource for each Hootsuite account, each authenticated with its own OAuth credentials. In your Retool app, add a Select component that allows switching between accounts, and dynamically reference the appropriate resource in your queries using Retool's resource selector in the query configuration. This pattern is common for social media agencies managing multiple client accounts.

### Is there an analytics delay in Hootsuite's API?

Yes. Hootsuite analytics data typically has a 24-72 hour processing delay depending on the social network. Twitter/X analytics are usually available within 24 hours, while Facebook and Instagram data can take up to 72 hours due to Meta's data processing pipeline. Display a disclaimer in your Retool dashboard noting the expected analytics freshness window to set appropriate user expectations.

---

Source: https://www.rapidevelopers.com/retool-integrations/hootsuite
© RapidDev — https://www.rapidevelopers.com/retool-integrations/hootsuite
