# How to Integrate Retool with Skillshare

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

## TL;DR

Connect Retool to Skillshare by adding a REST API Resource using Skillshare's limited partner API credentials. Skillshare's public API access is restricted and requires partner program approval. For teams with API access, build a creator analytics dashboard tracking class enrollments, engagement metrics, and earnings. Without API access, use Skillshare's data export functionality combined with Retool's database integration.

## Why Connect Retool to Skillshare?

Skillshare's native analytics dashboard provides basic class performance data — total views, enrollments, and earnings estimates — but instructors and organizations managing multiple classes often need deeper analysis. How does revenue correlate with class length? Which topics have the best completion rates? How has a class's performance trended month-over-month? Connecting Skillshare data to Retool enables these custom analytics without exporting to spreadsheets.

Skillshare's revenue model is unique among e-learning platforms: instructors earn royalties based on minutes watched by premium members rather than direct course sales. This makes engagement metrics (watch time, completion rate, re-watch rate) more important than enrollment count alone. A Retool dashboard built on Skillshare data can surface these minute-watched metrics alongside class-level performance, helping instructors optimize class structure and length for maximum earnings.

For organizations running Skillshare for Teams accounts — used by companies to provide employee learning benefits — Retool integration enables HR and L&D dashboards that track employee engagement with Skillshare content, completion rates, and learning path adherence. This internal reporting is difficult to build with Skillshare's native admin interface but becomes straightforward when the data is queryable from Retool alongside HR system data from other sources.

## Before you start

- Either: Skillshare partner API credentials (requires application and approval through Skillshare's partner program) OR Skillshare's CSV analytics export files downloaded from your creator or team admin dashboard
- For the database approach: a PostgreSQL database with tables created to store Skillshare export data
- A Retool account (Cloud or self-hosted) with permission to add Resources
- Basic familiarity with Retool's query editor, Table component, and Chart component
- Optional: a Skillshare for Teams account with admin access if building employee L&D dashboards

## Step-by-step guide

### 1. Understand Skillshare's API access model and choose your integration approach

Before configuring Retool, you need to understand how Skillshare API access works. Unlike platforms with open self-service API programs, Skillshare restricts API access to approved business partners. Individual instructors and organizations cannot simply generate an API key from the Skillshare dashboard — access must be requested and approved by Skillshare's partnership team.

There are two practical integration paths for Retool:

Path A — Partner API (if you have access): If your organization has an approved Skillshare partner API relationship, you will have a Client ID and Client Secret or API key provided by Skillshare's partnerships team. This enables real-time data queries from Retool via a REST API Resource.

Path B — Database-backed (works for everyone): Skillshare provides CSV data exports from the creator analytics dashboard (for instructors) and the team admin panel (for Skillshare for Teams accounts). Download these exports, import them into a PostgreSQL database table, and query that database from Retool. While not real-time, this approach works without API approval and is sufficient for weekly or monthly reporting dashboards.

For most teams, Path B (database-backed) is the practical starting point because API access approval is time-consuming and not guaranteed. This guide covers both approaches. Configure your Retool database Resource (PostgreSQL or another database) using the Resources tab → Add Resource → PostgreSQL, and create tables to store your Skillshare export data. If you obtain API credentials later, you can add a REST API Resource and augment or replace the database queries.

```
-- Schema for storing Skillshare export data in PostgreSQL
-- Run this in your PostgreSQL database before importing CSV exports

CREATE TABLE IF NOT EXISTS skillshare_classes (
  id SERIAL PRIMARY KEY,
  class_id VARCHAR(255) UNIQUE,
  class_title TEXT NOT NULL,
  topic_category VARCHAR(255),
  publication_date DATE,
  class_length_minutes INTEGER,
  total_enrollments INTEGER DEFAULT 0,
  total_minutes_watched BIGINT DEFAULT 0,
  estimated_earnings DECIMAL(10, 2) DEFAULT 0.00,
  is_published BOOLEAN DEFAULT true,
  last_updated TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS skillshare_monthly_stats (
  id SERIAL PRIMARY KEY,
  class_id VARCHAR(255) REFERENCES skillshare_classes(class_id),
  report_month DATE,
  enrollments_this_month INTEGER DEFAULT 0,
  minutes_watched_this_month BIGINT DEFAULT 0,
  earnings_this_month DECIMAL(10, 2) DEFAULT 0.00
);

-- Index for fast time-series queries
CREATE INDEX idx_monthly_stats_class_month
  ON skillshare_monthly_stats (class_id, report_month DESC);
```

**Expected result:** You have chosen your integration approach (API or database-backed), created the PostgreSQL schema if using the database approach, and your Retool account has either a REST API Resource (for API access) or a database Resource (for the export-based approach) configured.

### 2. Configure a Skillshare REST API Resource (partner API access only)

If you have Skillshare partner API credentials, configure a REST API Resource in Retool. Navigate to the Resources tab and click Add Resource → REST API.

In the configuration form:
- Name: 'Skillshare API'
- Base URL: https://www.skillshare.com/api — use the base URL provided by Skillshare's partnerships team, as Skillshare's internal API endpoints may differ from any publicly documented version
- Authentication: Configure based on the credential type Skillshare provided. If they issued an API key or token, use Bearer Token authentication and store the key in a Retool configuration variable marked as secret (Settings → Configuration Variables → SKILLSHARE_API_KEY). If they issued OAuth credentials, configure the OAuth 2.0 flow with the provided client ID and secret.

Because Skillshare's partner API documentation is not publicly available, the specific endpoints and response formats depend on your partner agreement. Common endpoints that partner APIs expose include:
- Class/course listing and metadata
- Enrollment counts and student data
- View/engagement metrics by class and time period
- Earnings and payment data

Work with your Skillshare partnerships contact to understand which endpoints are available to you and what authentication headers are required. Test the resource by creating a simple GET query to a known endpoint and verifying the response.

For teams without partner API access, skip this step and proceed to Step 3 to configure the database-backed approach.

**Expected result:** A Skillshare API REST Resource is configured in Retool and successfully returns data from at least one Skillshare endpoint. The API key is stored as a secret configuration variable.

### 3. Build the class analytics queries and Table components

Whether using the Skillshare API or the database-backed approach, create the core analytics queries that power your dashboard.

For the database-backed approach, create a query in the Retool Code panel that targets your PostgreSQL resource:

For the API-based approach, create a GET query to the Skillshare classes endpoint and use a JavaScript transformer to normalize the response to the same structure.

Bind the query result to a Table component. Configure the columns to show: class title, topic category, total enrollments, total minutes watched (formatted as hours and minutes), estimated earnings (formatted as currency), earnings per minute watched (a calculated column), and publication date.

For the 'earnings per minute watched' calculated column, use Retool's column transformer — add a custom column to the Table and set its value to {{ currentRow.estimated_earnings / (currentRow.total_minutes_watched || 1) * 100 }}, then format as currency. This derived metric shows which classes are most efficient at converting engagement into earnings.

Add filtering components above the Table: a Select for topic category (populated from a distinct query on the topic_category column), a DateRange component for publication date range filtering, and a Number Input for minimum enrollment threshold. Wire these to the query parameters so the Table updates when filters change.

```
-- PostgreSQL query for Skillshare class analytics dashboard
-- Includes calculated earnings efficiency metric
SELECT
  sc.class_id,
  sc.class_title,
  sc.topic_category,
  sc.publication_date,
  sc.class_length_minutes,
  sc.total_enrollments,
  ROUND(sc.total_minutes_watched / 60.0, 1) AS total_hours_watched,
  sc.estimated_earnings,
  CASE
    WHEN sc.total_minutes_watched > 0
    THEN ROUND((sc.estimated_earnings / sc.total_minutes_watched * 100)::numeric, 4)
    ELSE 0
  END AS earnings_per_100_minutes,
  sc.is_published
FROM skillshare_classes sc
WHERE
  sc.is_published = true
  AND ({{ categoryFilter.value }} = '' OR sc.topic_category = {{ categoryFilter.value }})
  AND sc.total_enrollments >= {{ minEnrollmentsInput.value || 0 }}
ORDER BY sc.estimated_earnings DESC;
```

**Expected result:** A Table displays all Skillshare classes with enrollment counts, engagement minutes, earnings, and the calculated earnings efficiency metric. Filtering by category or minimum enrollment count dynamically updates the Table results.

### 4. Add trend charts and earnings over time visualization

The most actionable part of a Skillshare analytics dashboard is historical trend data — seeing how a class's earnings and engagement have changed month by month. Create queries and Chart components to visualize this.

Create a query that fetches monthly statistics for the selected class from the skillshare_monthly_stats table. Bind this to the selected row in the classes Table using {{ classesTable.selectedRow.class_id }}.

Drag a Chart component onto the Retool canvas. Set it to Line Chart type. Configure the data source to the monthly stats query. Set the X-axis to report_month and add two Y-axis series:
- Earnings this month (primary left axis, in dollars)
- Minutes watched this month (secondary right axis)

This dual-axis chart lets instructors see the correlation between engagement (minutes watched) and earnings in the same view — useful for understanding lag effects (content promoted this month may drive earnings next month).

Add a second Chart component showing the cumulative earnings trend — a running total of earnings over the class's lifetime. Use a JavaScript transformer to calculate the cumulative sum:

Below the chart, add Stat components showing key lifetime metrics for the selected class: total enrollments, total hours watched, total estimated earnings, average monthly earnings, and the months-since-publication count. These can all be derived from the monthly stats data using transformer calculations.

When no row is selected in the classes Table, hide the trend charts using conditional visibility: set the Chart components' Hidden property to {{ !classesTable.selectedRow }}.

```
// JavaScript transformer for cumulative earnings chart
// Calculates running total of earnings by month
const monthlyStats = data; // query result sorted by report_month ASC
let cumulative = 0;

return monthlyStats
  .sort((a, b) => new Date(a.report_month) - new Date(b.report_month))
  .map(month => {
    cumulative += parseFloat(month.earnings_this_month) || 0;
    return {
      month: new Date(month.report_month).toLocaleDateString('en-US', {
        year: 'numeric', month: 'short'
      }),
      monthly_earnings: parseFloat(month.earnings_this_month) || 0,
      cumulative_earnings: parseFloat(cumulative.toFixed(2)),
      minutes_watched: month.minutes_watched_this_month || 0
    };
  });
```

**Expected result:** Selecting a class in the Table populates a Line Chart showing monthly earnings and minutes watched, and a cumulative earnings chart. Stat components show the class's lifetime performance metrics. Charts hide when no class is selected.

### 5. Build an automated data import Workflow for Skillshare CSV exports

To keep your Skillshare analytics dashboard current without manual CSV imports, set up a Retool Workflow that processes Skillshare export data on a schedule. Skillshare sends monthly analytics emails to instructors with downloadable report links — this Workflow automates the data ingestion from those exports.

Note: full automation of CSV download from Skillshare's dashboard requires a mechanism for file delivery. Three practical options are:
1. Email parsing: forward Skillshare analytics emails to a service like Zapier or Make that extracts the CSV attachment and posts it to a Retool Workflow webhook
2. Manual upload: a Retool app with a file upload interface where team members drop the monthly CSV, triggering a Workflow to process and insert the data
3. Scheduled Google Sheets sync: export from Skillshare to Google Sheets (via a manual step), then use Retool's Google Sheets Resource to read and import the data on a schedule

For the manual upload approach, create a Retool app with a File Input component. When a file is uploaded, it triggers a JavaScript query that parses the CSV data:

The JavaScript query processes the CSV rows and prepares them for database insertion. Chain a database query in the On Success event handler that upserts the parsed data into the skillshare_classes and skillshare_monthly_stats tables using PostgreSQL's ON CONFLICT DO UPDATE clause.

For teams with Skillshare for Teams accounts, work with your Skillshare account manager to understand what automated reporting exports or API access might be available — enterprise accounts sometimes have additional data access options not available to individual creators.

```
// JavaScript query to parse uploaded Skillshare CSV export
// Runs when a file is uploaded via the File Input component
const file = fileInput1.value[0]; // first uploaded file
const csvText = await new Promise((resolve, reject) => {
  const reader = new FileReader();
  reader.onload = e => resolve(e.target.result);
  reader.onerror = reject;
  reader.readAsText(file);
});

// Parse CSV rows
const lines = csvText.split('\n').filter(line => line.trim());
const headers = lines[0].split(',').map(h => h.trim().replace(/"/g, ''));

const rows = lines.slice(1).map(line => {
  const values = line.split(',').map(v => v.trim().replace(/"/g, ''));
  const row = {};
  headers.forEach((header, i) => {
    row[header] = values[i] || '';
  });
  return row;
});

// Transform to match PostgreSQL schema
return rows.map(row => ({
  class_title: row['Class Title'] || row['class_title'],
  total_enrollments: parseInt(row['Total Enrollments'] || row['enrollments'] || 0),
  total_minutes_watched: parseInt(row['Minutes Watched'] || row['minutes_watched'] || 0),
  estimated_earnings: parseFloat(row['Earnings'] || row['estimated_earnings'] || 0)
}));
```

**Expected result:** Uploading a Skillshare CSV export file triggers the parsing JavaScript query, which transforms the CSV data into database-ready records. The On Success event handler inserts or updates the parsed data in the PostgreSQL tables, refreshing the analytics dashboard.

## Best practices

- Store Skillshare API credentials in Retool configuration variables marked as secret — never embed API keys or tokens in query code or resource configurations directly.
- Use PostgreSQL's ON CONFLICT DO UPDATE (upsert) when importing Skillshare CSV data to handle re-imports gracefully without creating duplicate rows or requiring table truncation.
- Add a data freshness indicator to every Skillshare analytics dashboard showing the last import date — users need context to correctly interpret trends when the underlying data is from exports rather than live API calls.
- Calculate earnings per minute watched as a derived metric in your dashboard — this is the most actionable efficiency metric for Skillshare creators and is not surfaced in Skillshare's native analytics.
- Build separate monthly stats tables rather than aggregating everything in a single classes table — preserving monthly granularity enables trend analysis that a single-row-per-class schema cannot support.
- For Skillshare for Teams L&D dashboards, join Skillshare employee activity data with your HR system employee records using email addresses as the common identifier — this enables department-level engagement analysis.
- Archive all imported CSV exports to a cloud storage bucket (S3, Google Cloud Storage) before processing — this creates a raw data history that allows re-importing if the database schema changes or data is accidentally overwritten.

## Use cases

### Build a creator earnings and class performance dashboard

Create a Retool dashboard for Skillshare instructors that shows all published classes with their enrollment count, minutes watched, estimated earnings, and earnings per minute watched. Display a trend chart showing monthly earnings over time. Allow filtering by class topic, publication date, and performance tier. Identify which classes drive the most revenue and which have the best engagement-to-enrollment ratio to guide future content strategy.

Prompt example:

```
Build a Retool Skillshare analytics dashboard. Query the skillshare_classes table in PostgreSQL (populated from Skillshare CSV exports) for all published classes. Show a Table with columns: class title, total enrollments, total minutes watched, estimated earnings, earnings per minute watched (calculated), and class length in minutes. Add a Bar Chart showing monthly earnings trend for the selected class. Add filters for class topic and publication year. Highlight top 3 earners in green.
```

### Create an L&D tracking dashboard for Skillshare for Teams

Build a learning and development dashboard that combines Skillshare for Teams usage data with your employee database. Show which employees are active learners, what topics they're engaging with, completion rates by department, and which classes are most popular across the organization. Identify employees who haven't accessed Skillshare in the past 30 days for proactive L&D outreach. Generate quarterly learning reports for HR leadership.

Prompt example:

```
Create a Retool L&D dashboard. Query the employees table from the main database and join with skillshare_activity from the Skillshare export data table. Show a Table with employee name, department, last Skillshare activity date, total minutes watched this quarter, and number of classes completed. Add a Chart showing minutes watched by department as a Bar Chart. Highlight employees with zero activity in red. Add a 'Generate Report' button that exports the filtered data as CSV for the quarterly HR review.
```

### Build a content strategy panel comparing class performance metrics

Create a Retool analytics tool that compares performance across a portfolio of Skillshare classes by topic category, class length, and publication timing. Show scatter plots of class length vs. earnings, enrollment count vs. completion rate, and publication month vs. first-month earnings. Allow instructors to identify which content characteristics correlate with higher earnings and use this to inform future class creation decisions.

Prompt example:

```
Build a Retool content strategy panel. Query all Skillshare classes from the PostgreSQL database. Show a Scatter Chart with class length on X-axis and total earnings on Y-axis, each point representing a class and colored by topic category. Below, show a Table comparing average earnings by topic category. Add a 'vs.' selector to switch the chart axes between: class length, enrollment count, minutes watched, earnings per minute. Include a Select for filtering by publication year.
```

## Troubleshooting

### Skillshare API queries return 401 or 403 errors even with partner credentials

Cause: Partner API credentials may have expired, the credential format has changed, or the specific endpoint being queried requires additional authorization scope not included in your partner agreement.

Solution: Contact your Skillshare partnerships account manager to verify your API credentials are active and confirm which endpoints are included in your partner agreement. Ask for the exact Authorization header format required — some partner APIs use Bearer tokens, others use custom API key headers. Request up-to-date API documentation if your endpoints are returning unexpected errors.

### CSV import fails or produces incorrect data — numbers imported as strings or missing rows

Cause: Skillshare's CSV exports may use different encoding, delimiter characters (tabs vs. commas), or quoting conventions that cause parsing errors. Numbers formatted with currency symbols or commas in thousands separators cause parseInt/parseFloat to return NaN.

Solution: Log the raw CSV text to a Retool variable before parsing and inspect the first few rows. Check if the file uses commas or tabs as delimiters, and whether numbers include currency symbols ($) or comma separators. Update the parsing JavaScript to strip these characters: parseFloat(value.replace(/[$,]/g, '')) for currency fields. Handle quoted fields that may contain commas within the quoted string.

```
// Robust number parsing for Skillshare CSV fields
const parseNumber = (value) => {
  if (!value) return 0;
  const cleaned = value.toString().replace(/[$,%]/g, '').replace(/,/g, '');
  return parseFloat(cleaned) || 0;
};
```

### Class earnings data is present but minutes watched shows 0 for some classes

Cause: Skillshare's analytics may separate earnings data from engagement data in different export reports, or classes with very recent publications may not yet have engagement data in the export.

Solution: Download both the 'Class Earnings' and 'Class Analytics' CSV exports separately from the Skillshare creator analytics page — they may contain different datasets. Import both into separate PostgreSQL tables and join them on class ID in your Retool query. For new classes, the minutes watched data may take a billing period to appear in exports.

### Dashboard shows stale data because CSV exports are only imported monthly

Cause: The database-backed integration approach uses manually imported CSV data that only updates when a new export is processed. Skillshare's near-real-time analytics are only available via direct API access.

Solution: Add a prominent 'Data as of [date]' label on the dashboard showing when the data was last imported. Create a Retool Workflow that sends a monthly reminder (via Slack or email) to the team member responsible for downloading and uploading the new CSV export. For real-time requirements, contact Skillshare about API partner access.

## Frequently asked questions

### Does Skillshare have a public API for integrating with Retool?

Skillshare does not offer a self-service public API. API access requires applying to Skillshare's partner program and receiving approval and credentials from their partnerships team. The process and eligibility criteria for partner API access are determined by Skillshare on a case-by-case basis. For most instructors and organizations, the practical integration approach is using Skillshare's CSV data exports imported into a database that Retool queries.

### How do I calculate Skillshare earnings from the analytics data?

Skillshare pays instructors a royalty based on minutes watched by premium members. The per-minute rate varies and is determined by the total minutes watched across all classes divided into the total royalty pool for the period. Skillshare's CSV exports include an 'estimated earnings' column that reflects this calculation. In your Retool dashboard, display this estimated earnings value and calculate an efficiency metric (earnings per 100 minutes watched) to compare class performance, but treat earnings figures as estimates until Skillshare's official monthly payment is processed.

### Can I build an L&D dashboard for Skillshare for Teams from Retool?

Yes. Skillshare for Teams admin accounts have access to enhanced analytics exports that include per-employee engagement data — which members watched what content and for how long. Download these admin reports, import them into PostgreSQL, and build Retool dashboards that join the Skillshare engagement data with your employee database (using email addresses as the join key). This enables department-level learning analytics, completion rate tracking, and employee engagement reports that Skillshare's native admin UI doesn't provide.

### How often does Skillshare's analytics data update?

Skillshare's analytics data typically updates with a 24-48 hour delay. Views and minutes watched from a given day appear in the analytics dashboard 1-2 days later. Monthly earnings are finalized at the end of each payment period. For Retool dashboards using the database export approach, plan for weekly imports to balance data freshness with the manual import effort. For real-time requirements, partner API access is necessary.

---

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