Skip to main content
RapidDev - Software Development Agency
retool-integrationsDesign-to-Code Bridge

How to Integrate Retool with Framer

Use Framer with Retool through a design-to-code bridge workflow: extract interaction patterns and visual language from Framer prototypes to guide your Retool app layout, replicate transitions using Retool Custom Components, and connect to Framer's CMS API via REST Resource to manage Framer site content from a Retool admin dashboard.

What you'll learn

  • How to extract interaction patterns from Framer prototypes and translate them to Retool UI components
  • How to replicate Framer-style transitions in Retool Custom Components using React
  • How to create a Framer CMS API Resource in Retool for managing site content
  • How to build a Retool admin panel that creates, updates, and publishes Framer CMS items
  • How to structure a design-to-internal-tool workflow that keeps Framer and Retool in sync
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate13 min read30 minutesDesignLast updated April 2026RapidDev Engineering Team
TL;DR

Use Framer with Retool through a design-to-code bridge workflow: extract interaction patterns and visual language from Framer prototypes to guide your Retool app layout, replicate transitions using Retool Custom Components, and connect to Framer's CMS API via REST Resource to manage Framer site content from a Retool admin dashboard.

Quick facts about this guide
FactValue
ToolFramer
CategoryDesign
MethodDesign-to-Code Bridge
DifficultyIntermediate
Time required30 minutes
Last updatedApril 2026

Bridge Framer Prototypes and Retool Internal Tools

Framer occupies a unique position in the design toolchain — it is both a high-fidelity prototype tool and a production website builder with a built-in CMS. Teams often use Framer to design and prototype user-facing experiences before building them, and then manage the published Framer site content through an operations workflow. Retool can serve two roles in this ecosystem: as a recipient of Framer's design thinking, and as an admin panel for Framer's CMS.

When using Framer as a design source, the workflow is one-directional: product designers prototype interactions in Framer, stakeholders approve the UX, and Retool developers then use those prototypes as blueprints when building internal tool interfaces. The interaction patterns, component hierarchy, and visual language of a Framer prototype can directly inform how you organize Retool Tables, Modals, and Charts. For animated transitions that appear in the Framer prototype, Retool Custom Components (React-based) can replicate similar visual behaviors within the constraints of Retool's platform.

For teams that publish marketing sites, documentation, or landing pages on Framer, the second integration path is operationally valuable: Framer exposes a REST API for its CMS that allows creating and updating collection items programmatically. A Retool admin panel connected to Framer's CMS API lets content editors, marketers, or operations teams manage Framer site content with a more powerful interface than Framer's native CMS editor — adding bulk operations, approval workflows, and data validation that Framer's editor does not natively support.

Integration method

Design-to-Code Bridge

Framer and Retool serve fundamentally different purposes — Framer excels at interactive prototyping and published marketing sites, while Retool is optimized for internal tools and data-driven dashboards. The integration works in two directions: Framer prototypes inform the UX design of your Retool apps (interaction patterns, layout decisions, component hierarchy), and Framer's REST API allows you to manage Framer CMS content directly from a Retool admin panel. There is no direct visual sync between the two tools — the bridge is a workflow and an API connection.

Prerequisites

  • A Framer account with a published site that uses Framer CMS (required for the API integration path)
  • A Framer API key from your Framer account settings
  • Your Framer site ID (visible in the Framer dashboard URL or API documentation)
  • A Retool account with permission to create Resources and Custom Components
  • Basic familiarity with React if you plan to build Custom Components that replicate Framer animations

Step-by-step guide

1

Extract interaction patterns from your Framer prototype

Before opening Retool, spend time in Framer documenting the design patterns from your prototype that you want to replicate in the internal tool. Open your Framer project and review each interactive screen. Note the following for each major UI section: what component type is being used (list, form, modal, tabs), what triggers interactions (button clicks, row selections, dropdown changes), and what visual feedback is provided (loading states, success animations, error states). Create a simple mapping document or spreadsheet with two columns: 'Framer Pattern' and 'Retool Equivalent'. Common mappings include: Framer Stack → Retool Container, Framer List → Retool Table component, Framer Overlay → Retool Modal, Framer Inputs → Retool Form, Framer Badge → Retool Tag component, Framer Link → Retool Button with link action. Pay special attention to multi-step flows (like wizards or onboarding flows) — these often require Retool's Tab component or Custom Components to replicate faithfully. Document any patterns that have no direct Retool equivalent (complex animations, drag-and-drop reordering, canvas-based interactions) and plan these as Custom Components from the start. This documentation step saves hours of rework when building the Retool app, especially for complex internal tools where stakeholders approved a specific UX in Framer.

Pro tip: Export Framer prototype screens as annotated PDFs (Framer supports PDF export from the Share menu) and share them with your Retool development team as the design specification. Include interaction notes using Framer's annotation tools before exporting.

Expected result: A component mapping document that pairs each Framer design element with its Retool equivalent, flagging any elements that require Custom Components.

2

Obtain a Framer API key and locate your site ID

To connect Retool to Framer's CMS API, you need an API key and your site's CMS base URL. Log in to Framer at app.framer.com and navigate to your workspace settings. Click on your avatar or workspace name in the top left, then select Settings. Look for the API section — Framer provides API keys per workspace for CMS access. Click Generate API Key and copy the key immediately (it is shown only once). Store it securely in a password manager. Next, identify your Framer site ID. When you have a Framer site open, the URL in your browser will contain a format like app.framer.com/projects/YOUR_SITE_ID. Alternatively, the Framer CMS API documentation specifies that the base URL for CMS operations is https://api.framer.com/store/api/v1/sites/{siteId}/collections. You can find your site ID by making a test API call to GET https://api.framer.com/store/api/v1/sites with your Bearer token — this returns all sites in your workspace with their IDs. Make note of both the API key and the site ID for the Resource configuration in the next step.

Pro tip: Framer's API is specifically for the Framer CMS (content management) — it is not an API for the Framer design canvas or prototype interactions. If you only use Framer for prototyping (not as a CMS-powered site), skip Steps 2-4 and focus on the design-to-Retool workflow in Step 1.

Expected result: You have a Framer API key copied and know your site ID, ready to configure the REST API Resource in Retool.

3

Configure the Framer CMS REST API Resource in Retool

In Retool, navigate to the Resources tab in the left sidebar and click Add Resource. Select REST API from the resource type list. Name the resource 'Framer CMS API'. In the Base URL field, enter https://api.framer.com/store/api/v1. Scroll to the Authentication section and select Bearer Token from the dropdown. In the Token field, enter your Framer API key. This configures every query made through this resource to include an Authorization: Bearer YOUR_API_KEY header automatically. Add a default header: key Accept, value application/json. Click Save Changes and test the connection by using the Test button if available, or by creating a test query in a Retool app. To test, create a GET query to the path /sites — if the response returns your Framer workspace sites, the connection is working correctly. Once you have confirmed connectivity, note your site ID from the test response and store it as a Retool Configuration Variable (Settings → Configuration Variables) named FRAMER_SITE_ID so you can reference it in queries as {{ retoolContext.configVars.FRAMER_SITE_ID }} without hard-coding it.

Pro tip: Create the Framer site ID as a Configuration Variable rather than hard-coding it in query paths. This allows you to switch between Framer staging and production sites by changing a single variable.

Expected result: A Framer CMS API resource is saved in Retool and test queries return your Framer site data successfully.

4

Build a Framer CMS content management dashboard

Create a new Retool app and build the CMS management interface. First, create a query named 'getCollections' — set Method to GET, Path to /sites/{{ retoolContext.configVars.FRAMER_SITE_ID }}/collections. This returns all CMS collections in your Framer site (e.g., Blog Posts, Team Members, Products). Add a Select component to your canvas named 'collectionSelect' and set its options to {{ getCollections.data?.collections?.map(c => ({ label: c.name, value: c.id })) || [] }}. Next, create a query named 'getCollectionItems' — set Method to GET, Path to /sites/{{ retoolContext.configVars.FRAMER_SITE_ID }}/collections/{{ collectionSelect.value }}/items, and set it to trigger when collectionSelect changes. Drag a Table component onto the canvas, set its Data to {{ getCollectionItems.data?.items || [] }}. For creating new CMS items, add a Modal component to the canvas. Inside the modal, add a Form with Text Input fields corresponding to the CMS collection fields (these vary by collection). Create a query named 'createItem' — set Method to POST, Path to /sites/{{ retoolContext.configVars.FRAMER_SITE_ID }}/collections/{{ collectionSelect.value }}/items, Body Type to JSON. Set the Body to a dynamic object built from the Form inputs. In the query's On Success handler, trigger 'getCollectionItems' to refresh the table and close the modal.

framer_cms_transformer.js
1// Transformer: reshape Framer CMS items for Retool Table display
2const items = data?.items || [];
3return items.map(item => {
4 const fields = item.fieldData || {};
5 return {
6 id: item.id,
7 name: fields.name || fields.title || item.id,
8 slug: fields.slug || '',
9 published: item.isArchived ? 'Draft' : 'Published',
10 created_at: item.createdAt
11 ? new Date(item.createdAt).toLocaleDateString()
12 : 'N/A',
13 updated_at: item.lastPublished
14 ? new Date(item.lastPublished).toLocaleDateString()
15 : 'N/A'
16 };
17});

Pro tip: Framer CMS field names in the API response are nested under 'fieldData' with keys matching the CMS field slugs. Inspect a single item response first to understand your collection's specific field structure before building the transformer.

Expected result: A Framer CMS management panel shows all collections in a Select dropdown, loads collection items into a Table, and provides a Modal Form for creating new items.

5

Replicate Framer interaction patterns in Retool Custom Components

For visual interactions that exist in your Framer prototype but have no direct Retool equivalent — animated transitions, custom hover states, drag-and-drop reordering — Retool Custom Components allow you to embed React code directly in your app. In the Retool editor, drag a Custom Component from the component panel onto your canvas. Click the component to open its configuration, then click 'Open in Code Editor' to access the Custom Component IDE. Custom Components in Retool use the @retool-ui/components package and can receive and send model data to the parent Retool app. For a simple animated card transition (common in Framer prototypes), write a React component that uses CSS transitions. For a progress stepper that mimics a Framer onboarding flow, use React state to manage the current step and animate transitions between steps. Keep Custom Components focused on visual presentation — data fetching should still happen through Retool's standard queries, with results passed into the Custom Component via its model properties. Reference the component's data from the parent app using {{ customComponent1.model.data }} and dispatch events back using modelUpdate. Note that Custom Components require a Business or Enterprise Retool plan.

StatusBadge.jsx
1// Custom Component: Animated Status Badge (matches Framer prototype styling)
2import React from 'react';
3
4const STATUS_COLORS = {
5 published: { bg: '#d1fae5', text: '#065f46' },
6 draft: { bg: '#fef3c7', text: '#92400e' },
7 archived: { bg: '#f3f4f6', text: '#374151' }
8};
9
10export default function StatusBadge({ model }) {
11 const status = (model.status || 'draft').toLowerCase();
12 const colors = STATUS_COLORS[status] || STATUS_COLORS.draft;
13
14 return (
15 <span style={{
16 padding: '4px 10px',
17 borderRadius: '9999px',
18 fontSize: '12px',
19 fontWeight: 500,
20 backgroundColor: colors.bg,
21 color: colors.text,
22 transition: 'all 0.2s ease'
23 }}>
24 {status.charAt(0).toUpperCase() + status.slice(1)}
25 </span>
26 );
27}

Pro tip: Before building Custom Components, check if Retool's native components — especially Table column types (tags, links, badges) and the rich formatting options in Text components — can already replicate the Framer visual you need. Custom Components add maintenance overhead.

Expected result: Custom Components in the Retool app provide visual polish that matches the interaction language established in the Framer prototype, with animations and styled elements consistent with the approved design.

Common use cases

Build a Framer CMS content management panel in Retool

Create a Retool admin panel that connects to your Framer site's CMS API to manage blog posts, product pages, or team member profiles. Content editors can create new CMS items, update existing ones, and trigger site republishing — all without needing access to Framer itself. Bulk operations allow updating multiple items simultaneously.

Retool Prompt

Build a Retool panel for managing Framer CMS items. Show a Table of existing blog posts from the Framer CMS API with title, published date, and status. Include a Form for creating new posts, and buttons to update or delete existing entries.

Copy this prompt to try it in Retool

Use a Framer prototype to design a Retool ops dashboard layout

Design the UX of a complex multi-step internal tool in Framer first — prototype the user flow, component interactions, and modal sequences — then use the approved Framer prototype as a specification document when building the Retool app. Map each Framer component to its closest Retool equivalent and document any gaps that require Custom Components.

Retool Prompt

Reference the Framer prototype at [URL] for the order fulfillment dashboard. Build the equivalent Retool app with the same three-panel layout: order list on left, order details in center, and action buttons on right, matching the interaction patterns from the prototype.

Copy this prompt to try it in Retool

Build a Retool panel to manage Framer site publishing

Create an operations dashboard that shows all Framer CMS collections, their item counts, last-updated timestamps, and publishing status. Include the ability to manage content across multiple Framer sites from a single Retool interface, with filters for draft vs. published items and approval workflow integration.

Retool Prompt

Build a Retool dashboard that lists all Framer CMS collections via API, shows item counts and last-modified dates, and lets operators create, update, and manage CMS items with a Form and Table combination.

Copy this prompt to try it in Retool

Troubleshooting

Framer API returns 401 Unauthorized when testing the resource connection

Cause: The Framer CMS API key may have been entered incorrectly, expired, or the wrong authentication method is selected. Framer API keys use Bearer Token authentication, not Basic Auth or API key header.

Solution: In the Retool Resource settings, confirm the Authentication type is set to 'Bearer Token' (not Basic Auth or a custom header). Verify the token value does not contain extra whitespace or newline characters — regenerate it in Framer Settings → API if unsure. Framer API keys do not expire, so a 401 typically means the key value is incorrect.

Framer CMS items return but fieldData is empty or missing expected fields

Cause: Framer CMS field names in the API are based on the field slugs defined in the CMS collection, not the display names. A field called 'Blog Title' in the Framer editor might have slug 'blog-title' and appear as fieldData['blog-title'] in the API response.

Solution: Fetch a single item and log its complete fieldData object to see the exact key names. Use the raw query result panel in Retool's query editor to inspect the response. Update your transformer to use the correct slug-based field keys. If fields are entirely missing, verify the items have been published in Framer — draft items may not expose all fields.

typescript
1// Log field keys to debug
2const item = data?.items?.[0];
3if (item) {
4 console.log('Available field keys:', Object.keys(item.fieldData || {}));
5}
6return data?.items || [];

Custom Component does not receive model data from the parent Retool app

Cause: Custom Components require the model to be explicitly defined in the component's Model tab in the Custom Component IDE. If the model properties are not defined, data passed from the parent app is not available inside the component.

Solution: In the Custom Component IDE, click the 'Model' tab and define each property your component expects — set the property name, type, and default value. In the parent app, set the Custom Component's model properties to the values you want to pass (e.g., set 'status' to {{ table1.selectedRow.status }}). The component then accesses these via the model prop.

Best practices

  • Create a Framer-to-Retool component mapping document before building the Retool app — this prevents UX inconsistencies and aligns stakeholder expectations set during Framer prototyping
  • Store the Framer API key and site ID as Retool Configuration Variables rather than hard-coding them in resources or queries — this enables environment-specific configuration for staging vs. production sites
  • Use Framer CMS collections with consistent, descriptive field slugs (not auto-generated IDs) to make the API response easier to work with in Retool transformers
  • Leverage Retool's native Table column types (tags, links, status badges) to replicate Framer visual patterns before resorting to Custom Components — native components are maintained by Retool and require no custom code
  • For Framer CMS management, build a dedicated Retool app for content editors with simplified forms rather than exposing the full API — hide technical fields like IDs and use Select components to constrain input options
  • Document which Framer interactions are intentionally not replicated in the Retool tool (marketing animations, consumer-facing polish) versus which represent functional requirements that must be implemented
  • Test Framer API connections in Retool's query editor before building the full UI — verify the response structure matches your transformer expectations with real data

Alternatives

Frequently asked questions

Can Retool directly import or sync with Framer design files?

No, there is no direct import or sync between Framer and Retool. The integration is a workflow bridge: Framer prototypes serve as design specifications that Retool developers reference when building apps, and Framer's CMS API provides programmatic content management. There is no automated way to convert a Framer prototype into a Retool app.

Does Framer's API provide access to the design canvas or prototype interactions?

No. Framer's publicly available REST API is specifically for the Framer CMS — it allows creating, reading, updating, and deleting CMS collection items on Framer-published sites. It does not expose the design canvas, components, prototype interactions, or animation configurations. If you need programmatic access to Framer design files, use the Framer API in combination with Framer's export features.

What is the best way to replicate Framer's smooth animations in a Retool app?

Retool Custom Components are the primary path for replicating complex animations. Custom Components are React-based and can use CSS transitions, React Spring, or Framer Motion (the animation library, separate from Framer the design tool). For simpler transitions like loading states and status changes, Retool's native components include built-in animation options in the component styling panel — check the Appearance section for transition settings.

Can I use Retool as an admin panel for a Framer-built website?

Yes, and this is one of the most practical use cases for the Framer-Retool integration. Use the Framer CMS API via a REST API Resource in Retool to create a full CRUD admin panel for managing Framer site content. Content editors can use the Retool interface to manage posts, products, or any other CMS collection without needing Framer access. Combine this with approval workflows or scheduled publishing logic using Retool Workflows.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Retool integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.