Connect Retool to Codecademy for Teams using the Codecademy for Teams admin interface and available data exports to build employee learning progress dashboards. Codecademy's public API access is very limited, so the primary integration approach is using available admin data exports combined with Retool's database or a scheduled import into a database table for tracking coding skill development across your organization.
| Fact | Value |
|---|---|
| Tool | Codecademy |
| Category | Other |
| Method | REST API Resource |
| Difficulty | Beginner |
| Time required | 20 minutes |
| Last updated | April 2026 |
Build a Codecademy Learning Progress Dashboard in Retool
Codecademy for Teams gives organizations a platform for structured coding education, but the native admin dashboard's reporting capabilities are limited to basic completion metrics. Engineering managers who want to track which team members have completed specific courses, HR teams monitoring compliance training completion, and L&D managers building learning pathways all need a more flexible reporting layer than Codecademy provides natively.
Codecademy's API is not publicly documented or available for general third-party integration — unlike platforms such as Coursera or Udemy for Business, Codecademy does not offer a standard REST API that external tools can authenticate against. The practical integration paths for Retool involve either: (1) using the Codecademy for Teams admin dashboard's export features to download progress CSVs and import them into a database, then building Retool on top of that database; or (2) working with Codecademy's enterprise support team to explore any available reporting integrations for large accounts.
The database-backed approach is the most reliable and gives you the most flexibility: import Codecademy data on a schedule, join it with your employee directory and role data, and build a Retool dashboard that tracks coding skill development alongside other HR and engineering metrics. This pattern works well for any learning platform with limited API access.
Integration method
Codecademy's public API access is very limited — there is no general-purpose REST API for third-party integrations. The primary integration approach for Retool uses Codecademy for Teams admin data exports (CSV downloads from the Teams admin dashboard) imported into a database table, combined with a REST API Resource if your organization has access to Codecademy's enterprise reporting endpoints. Retool then queries your database for real-time learning progress dashboards.
Prerequisites
- A Codecademy for Teams account with admin access (available on Business and Enterprise plans)
- Access to Codecademy's admin dashboard to export progress and completion data as CSV
- A database (PostgreSQL, MySQL, or Retool Database) to store imported Codecademy data
- A Retool account with permission to create Resources and connect to the database
- Basic familiarity with Retool's query editor, Table component, and SQL queries
Step-by-step guide
Export Codecademy for Teams data
Codecademy for Teams provides data export capabilities through the admin dashboard. Log into your Codecademy for Teams admin account and navigate to the Admin section. Look for Reports or Data Export options — the exact location depends on your plan and Codecademy's current interface, which has been updated periodically. Download the available progress reports as CSV. Typical export data includes: employee email, employee name, course name, course category, enrollment date, completion date (if completed), completion percentage, and total time spent. Some Codecademy plans may offer more detailed exports including individual lesson completions, assessment scores, and learning path progress. If Codecademy has updated their admin interface since this was written, look for 'Reports', 'Analytics', 'Data Export', or 'Team Progress' in the admin navigation. Enterprise plan customers may have access to automated reporting or direct data feeds — contact your Codecademy account manager to explore these options. Once you have the CSV export, prepare to import it into your database. The import process establishes the data foundation that Retool will query — subsequent exports can update the data on a weekly or monthly basis depending on how frequently you need fresh progress data in your Retool dashboard.
Pro tip: Schedule Codecademy data exports on a regular cadence (weekly or monthly) and automate the import into your database using a script or Retool Workflow. Consistent export/import scheduling is the key to keeping your Retool dashboard's data current.
Expected result: You have a CSV file containing Codecademy team progress data with employee names, course names, completion percentages, and time spent.
Create a database table for Codecademy progress data
Import your Codecademy CSV data into a database that Retool can query. If you're using Retool Database (the built-in managed PostgreSQL), navigate to Retool Database in your Retool account and create a new table. Create a table named codecademy_progress with the following columns: - id: SERIAL PRIMARY KEY - employee_email: VARCHAR(255) - employee_name: VARCHAR(255) - department: VARCHAR(255) (join from your employee directory if available) - course_name: VARCHAR(500) - course_category: VARCHAR(255) (Python, JavaScript, SQL, Data Science, etc.) - enrollment_date: DATE - completion_date: DATE (nullable) - completion_percentage: INTEGER - time_spent_minutes: INTEGER - last_activity_date: DATE - imported_at: TIMESTAMP DEFAULT NOW() Import your CSV data into this table using Retool Database's import feature, your database management tool (pgAdmin, DBeaver), or a SQL INSERT statement. Create a database Resource in Retool pointing to this database: Resources tab → Add Resource → PostgreSQL (or your database type) → configure connection details. This database becomes the query layer for your Retool dashboard — all subsequent steps build SQL queries against this table.
1-- Create table for Codecademy progress data2CREATE TABLE IF NOT EXISTS codecademy_progress (3 id SERIAL PRIMARY KEY,4 employee_email VARCHAR(255) NOT NULL,5 employee_name VARCHAR(255),6 department VARCHAR(255),7 course_name VARCHAR(500),8 course_category VARCHAR(255),9 enrollment_date DATE,10 completion_date DATE,11 completion_percentage INTEGER DEFAULT 0,12 time_spent_minutes INTEGER DEFAULT 0,13 last_activity_date DATE,14 imported_at TIMESTAMP DEFAULT NOW()15);1617-- Index for common query patterns18CREATE INDEX idx_employee_email ON codecademy_progress(employee_email);19CREATE INDEX idx_course_category ON codecademy_progress(course_category);20CREATE INDEX idx_completion ON codecademy_progress(completion_percentage);Pro tip: Add an import_batch_id column to your table so you can track which records came from which export batch. This makes it easy to update records from new exports without duplicating data.
Expected result: A database table exists with imported Codecademy progress data, and a Retool database Resource is configured to connect to it.
Build team progress overview queries
Create the foundational SQL queries for your Retool dashboard. In Retool's query editor, create queries against your database Resource. getTeamProgress: Fetches all employees and their course completion status. getCategoryCompletion: Aggregates completion by course category for the Chart component. getDepartmentStats: Groups completion data by department for the management overview. getRecentActivity: Shows employees with the most recent Codecademy activity — useful for identifying engaged learners and those who haven't logged in recently. Bind these queries to Table and Chart components in your Retool dashboard. Use Retool's Select components for filtering by department, course category, and date range. The date range filter should apply to last_activity_date to show recent learners.
1-- Query: Team progress overview with completion stats2SELECT3 employee_name,4 employee_email,5 department,6 COUNT(*) as total_courses_enrolled,7 COUNT(CASE WHEN completion_percentage = 100 THEN 1 END) as courses_completed,8 AVG(completion_percentage) as avg_completion_pct,9 SUM(time_spent_minutes) / 60.0 as total_hours_spent,10 MAX(last_activity_date) as last_active11FROM codecademy_progress12WHERE13 ({{ select_department.value === 'All' || select_department.value === '' }}14 OR department = {{ select_department.value }})15GROUP BY employee_name, employee_email, department16ORDER BY avg_completion_pct DESC;Pro tip: Use Retool's {{ }} expression syntax to make SQL queries dynamic — filter by department, category, or date range based on Select component values. Retool automatically converts SQL queries to prepared statements, preventing SQL injection.
Expected result: The team progress query populates a Table showing each employee's enrollment count, completion count, average completion percentage, and total learning hours.
Build category and skills analytics Charts
Add visual analytics to the dashboard using Retool's Chart component (Plotly.js-powered). Create a getCategoryStats query that groups completion data by course category: Bind this to a Bar Chart showing average completion percentage by category (Python, JavaScript, SQL, etc.). For skills coverage analysis, create a getSkillsCoverage query that calculates what percentage of the team has achieved at least 80% completion in each course category — this is your skills coverage metric. Build a Stat panel at the top of the dashboard with key metrics: - Total active learners (employees with last_activity_date in the last 30 days) - Organization-wide completion rate (AVG of completion_percentage) - Total learning hours (SUM of time_spent_minutes / 60) - Courses completed this month For the individual employee detail view, create a getEmployeeCourses query that filters to a specific employee selected from the Table and shows all their enrolled courses with per-course completion status. Bind the Table's selectedRow to drive this query. For complex integrations that combine Codecademy progress data with HRIS systems, performance review data, or recruiting pipeline data, RapidDev's team can help build the multi-source data architecture in Retool.
1-- Query: Course category completion rates2SELECT3 course_category,4 COUNT(DISTINCT employee_email) as learners_enrolled,5 COUNT(DISTINCT CASE WHEN completion_percentage = 100 THEN employee_email END) as learners_completed,6 ROUND(AVG(completion_percentage), 1) as avg_completion_pct,7 ROUND(SUM(time_spent_minutes) / 60.0, 1) as total_hours_spent,8 ROUND(9 100.0 * COUNT(DISTINCT CASE WHEN completion_percentage >= 80 THEN employee_email END)10 / NULLIF(COUNT(DISTINCT employee_email), 0),11 112 ) as pct_learners_proficient13FROM codecademy_progress14GROUP BY course_category15ORDER BY avg_completion_pct DESC;Pro tip: Define 'proficiency' as 80% course completion for skills tracking purposes — this distinguishes learners who are genuinely engaging with the material from those who completed only introductory sections.
Expected result: The analytics section shows a Bar Chart with completion rates by course category, Stat components with organization-wide metrics, and an employee detail panel for drill-down.
Automate data refresh with Retool Workflows
Since Codecademy doesn't offer a real-time API, set up a process to keep your database data current. The approach depends on how frequently Codecademy allows data exports and your organization's reporting cadence. For manual refresh: Create a Retool app with an Import CSV button that allows an L&D admin to upload a fresh Codecademy export CSV. Use Retool's file upload component and a JavaScript query to parse the CSV and run INSERT OR UPDATE statements against your database table. For automated refresh: Use a Retool Workflow with a scheduled trigger (weekly, every Monday at 6 AM) that reminds or notifies the L&D admin to download and import the latest Codecademy export. The workflow can send a Slack or email notification with instructions. If your Codecademy enterprise account provides any API access or scheduled data pushes, configure a Retool Workflow with a webhook trigger to receive new data when Codecademy sends it. Add a data_freshness indicator to your Retool dashboard showing the last import date: SELECT MAX(imported_at) as last_imported FROM codecademy_progress. Display this prominently so users know how current the data is.
1-- Upsert Codecademy data (update existing, insert new)2INSERT INTO codecademy_progress (3 employee_email, employee_name, department, course_name,4 course_category, enrollment_date, completion_date,5 completion_percentage, time_spent_minutes, last_activity_date, imported_at6)7VALUES {{ formatDataAsArray(importedData) }}8ON CONFLICT (employee_email, course_name)9DO UPDATE SET10 completion_percentage = EXCLUDED.completion_percentage,11 time_spent_minutes = EXCLUDED.time_spent_minutes,12 last_activity_date = EXCLUDED.last_activity_date,13 completion_date = EXCLUDED.completion_date,14 imported_at = NOW();Pro tip: Add a unique constraint on (employee_email, course_name) in your database table to enable upsert operations — this prevents duplicate records when re-importing the same data with updated completion percentages.
Expected result: A data refresh process is established with a visible 'last updated' indicator on the dashboard, ensuring L&D admins know when the Codecademy data was last imported.
Common use cases
Build a team coding skills progress dashboard
Create a Retool dashboard that tracks each team member's Codecademy course completion status across assigned learning paths. Engineering managers can see who has completed Python fundamentals, who is in progress on data science courses, and who hasn't started their assigned curriculum — enabling proactive check-ins and learning pathway adjustments.
Build a Retool team learning dashboard. Import Codecademy for Teams export data into a database table with columns: employee_id, employee_name, course_name, course_category, completion_percentage, last_activity_date, and time_spent_hours. Show a Table of all team members with their completion status per assigned course. Add a Chart showing average completion percentage by department. Include a filter by course category (Python, JavaScript, SQL, Data Science).
Copy this prompt to try it in Retool
Build a learning compliance and assignment tracker
Build a Retool admin panel for L&D teams to assign Codecademy courses to employees, track completion against deadlines, and generate compliance reports for mandatory coding skill training. The panel shows overdue assignments, completion rates by department, and individual learner progress — giving L&D coordinators a single view across all assigned learning.
Build a Retool learning compliance dashboard. Show all employees with their assigned Codecademy courses, completion percentage, assignment date, due date, and days until deadline. Highlight overdue assignments in red and approaching deadlines in yellow. Add a Stat panel showing organization-wide completion rate, total hours of learning logged, and number of completed certifications. Include a CSV export for compliance reporting.
Copy this prompt to try it in Retool
Build a skills inventory and gap analysis dashboard
Create a Retool analytics panel that maps Codecademy course completions to skills taxonomy, then compares the team's current skills inventory against role requirements. This gives engineering leads a data-driven view of which coding skills are covered across the team and where gaps exist — informing hiring plans and learning pathway prioritization.
Build a Retool team skills inventory dashboard. Map completed Codecademy courses to skill categories (Python, JavaScript, SQL, React, etc.). Show a heatmap-style grid of team members vs. skills, with completion percentage as the color intensity. Add a role requirements table showing expected skills by job title. Highlight skills where fewer than 50% of team members have completed the relevant courses.
Copy this prompt to try it in Retool
Troubleshooting
Codecademy admin dashboard doesn't show export or data download options
Cause: Data export features may only be available on Codecademy for Teams Business or Enterprise plans, or the feature may be located in a different section of the admin interface.
Solution: Check your Codecademy for Teams subscription plan level. Contact Codecademy support or your account manager to ask specifically about data export capabilities for your plan. Look in Admin → Reports, Admin → Analytics, or any 'Settings' section that might contain export options. Codecademy's admin interface has changed over time — if options aren't visible, the feature may have moved or require a plan upgrade.
Imported CSV data has inconsistent column formats or missing values
Cause: Codecademy's CSV exports may not have consistent column naming across different export types, and some fields (like completion_date for in-progress courses) may be empty.
Solution: Before importing, clean the CSV data: handle empty completion_date values as NULL in SQL, standardize course_category values (Codecademy may use different naming conventions across exports), and ensure numeric fields like completion_percentage are properly formatted as integers. Use a spreadsheet or Python script to validate and clean the export before database import.
Dashboard shows outdated data that doesn't reflect recent Codecademy activity
Cause: The database has not been updated with a fresh Codecademy export — the data is only as current as the last import.
Solution: Display the last_imported timestamp prominently on the dashboard to set expectations about data freshness. Establish a regular export-and-import schedule (weekly is typically sufficient for L&D tracking). Consider adding a 'Request Data Refresh' button that sends a notification to the L&D admin responsible for running the export.
Completion percentages in Retool don't match what employees see in Codecademy
Cause: Codecademy may update completion tracking in real-time, while your database reflects the state at the time of the last export. Also, some Codecademy plans calculate completion differently (by lessons vs. by assessments passed).
Solution: This is an inherent limitation of the CSV-export approach — your Retool data will always lag Codecademy's real-time state by the import interval. Document this limitation for dashboard users and emphasize that the data reflects a specific export date. If real-time accuracy is critical, explore Codecademy enterprise data feed options with your account manager.
Best practices
- Add a data_freshness_date field to your database and display it prominently on the Retool dashboard — users need to know how current the Codecademy data is, since it's not real-time.
- Use UPSERT operations (INSERT ON CONFLICT DO UPDATE) rather than DELETE + INSERT when refreshing data — this preserves historical records and allows incremental updates.
- Join Codecademy progress data with your employee directory database to add department, manager, and team fields — this unlocks department-level filtering and organizational hierarchy views.
- Define a clear 'completion' threshold for skills tracking (e.g., 80% course completion = proficient) and communicate it to stakeholders — raw completion percentages are less actionable than clear pass/fail thresholds.
- Create a SQL view in your database that combines Codecademy progress data with course-to-skill mappings — this simplifies skills inventory queries in Retool.
- Archive historical progress snapshots rather than overwriting data — keeping monthly snapshots allows you to show progress trends over time (how completion rates have improved quarter over quarter).
- Build an email notification into your Retool Workflow that reminds the L&D admin to download and import fresh Codecademy data on schedule — process gaps are the most common failure mode.
- Include a data quality check query that alerts if the latest import looks suspiciously low (e.g., fewer records than the previous import) — this catches CSV format changes or incomplete exports before they affect reporting.
Alternatives
Coursera offers a Partner API for enterprise accounts with more programmatic data access than Codecademy, making it easier to integrate real-time learning progress data into Retool without CSV exports.
Udacity for Enterprise focuses on technical skill development similar to Codecademy, with enterprise reporting tools for tracking learner progress across data science and engineering courses.
Khan Academy offers a public API with some learner data access, making it more amenable to direct REST API integration with Retool than Codecademy's limited API surface.
Frequently asked questions
Does Codecademy have a REST API for third-party integrations?
Codecademy does not offer a publicly documented REST API for third-party integrations. Unlike Coursera or GitHub, there is no API key or OAuth flow that allows external tools to query learning progress data. The practical integration approach for Retool is to use Codecademy for Teams' admin data export capabilities (CSV downloads) and build a database-backed dashboard. Enterprise plan customers should contact Codecademy's enterprise team to explore any available data feed or reporting integration options.
What data can I export from Codecademy for Teams?
Codecademy for Teams admin exports typically include: employee email addresses, course names, enrollment dates, completion percentages, total time spent, and last activity dates. The specific fields and export format depend on your plan tier and Codecademy's current admin interface. Enterprise plans may offer more detailed exports including individual lesson progress and assessment scores. Navigate to your Teams admin dashboard's Reports or Analytics section for available export options.
How often should I update the Codecademy data in my Retool database?
For most L&D tracking use cases, a weekly refresh is sufficient — learning progress doesn't change so rapidly that daily updates are necessary. Monthly exports work well for compliance reporting. Schedule your Codecademy export and database import to run at a consistent time (e.g., every Monday morning) and display the last-updated timestamp on your Retool dashboard so users know the data's freshness.
Can I track which specific lessons employees have completed in Codecademy?
Lesson-level tracking depends on what Codecademy includes in their admin exports for your plan tier. Standard exports typically show course-level completion percentages rather than individual lesson completions. For lesson-level granularity, contact your Codecademy account manager — enterprise plans may offer more detailed reporting. In most cases, course-level completion tracking (grouped by course category) provides sufficient insight for skills development reporting.
How do I handle employees who have left the company in my Codecademy Retool dashboard?
Add an active_employee flag to your database table by joining the Codecademy data with your employee directory or HRIS system. Filter your main dashboard queries to active employees only (WHERE active_employee = true). For compliance archives, keep former employee records but exclude them from operational views. If your employee directory is also in a Retool-connected database, use a SQL JOIN to pull the active status dynamically rather than maintaining it manually.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation