β οΈ Unofficial Community ProviderThis is an unofficial, community-maintained Pulumi provider for Webflow. It is not affiliated with, endorsed by, or supported by Pulumi Corporation or Webflow, Inc. This project is an independent effort to bring infrastructure-as-code capabilities to Webflow using Pulumi.
- Not an official product - Created and maintained by the community
- No warranties - Provided "as-is" under the MIT License
- Community support only - Issues and questions via GitHub
Manage your Webflow sites and resources as code using Pulumi
The Webflow Pulumi Provider lets you programmatically manage Webflow resources using the same Pulumi infrastructure-as-code approach you use for cloud resources. Manage sites, pages, collections, redirects, webhooks, assets, and more. Deploy, preview, and destroy Webflow infrastructure alongside your other cloud deployments.
- Deploy Webflow resources as code - Define sites, pages, collections, redirects, webhooks, assets, and more in TypeScript, Python, Go, C#, or Java
- Preview before deploying - Use
pulumi previewto see exactly what will change - Manage multiple environments - Create separate stacks for dev, staging, and production
- Version control your infrastructure - Track all changes in Git
- Integrate with CI/CD - Automate deployments in your GitHub Actions, GitLab CI, or other pipelines
- Prerequisites
- Installation
- Quick Start - Start here
- Authentication
- Verification
- Get Help
- Version Control & Audit Trail
- Multi-Language Examples
- Next Steps
- Contributing
Before you begin, make sure you have:
- Download and install from pulumi.com/docs/install
- Verify installation:
pulumi version(requires v3.0 or later)
- TypeScript: Node.js 18.x or later
- Python: Python 3.9 or later
- Go: Go 1.21 or later
- C#: .NET 6.0 or later
- Java: Java 11 or later
- A Webflow account with API access enabled
- Access to at least one Webflow site (where you'll deploy your first resource)
- Your Webflow API token (see Authentication section below)
The Webflow provider installs automatically when you first run pulumi up. For manual installation:
# Automatic installation (recommended - happens on first pulumi up/preview)
# Just run the Quick Start below, and the provider will install automatically
# OR manual installation if you prefer
pulumi plugin install resource webflow
# Verify installation
pulumi plugin ls | grep webflowThis quick start walks you through deploying a robots.txt resource to your Webflow site using TypeScript. The entire process takes about 5 minutes once prerequisites are met.
# Create a new directory for your Pulumi project
mkdir my-webflow-project
cd my-webflow-project
# Initialize a new Pulumi project
pulumi new --template typescript
# When prompted:
# - Enter a project name: my-webflow-project
# - Enter a stack name: dev
# - Enter a passphrase (or leave empty for no encryption): <press enter>This creates:
Pulumi.yaml- Project configurationPulumi.dev.yaml- Stack-specific settingsindex.ts- Your infrastructure codepackage.json- Node.js dependencies
# Get your Webflow API token (see Authentication section below if you don't have one)
# Set your token in Pulumi config (encrypted in Pulumi.dev.yaml)
pulumi config set webflow:apiToken --secret
# When prompted, paste your Webflow API token and press EnterWhat's happening: Your token is encrypted and stored locally in Pulumi.dev.yaml (which is in .gitignore). It's never stored in plain text.
Replace the contents of index.ts with:
import * as pulumi from "@pulumi/pulumi";
import * as webflow from "@jdetmar/pulumi-webflow";
// Get config values
const config = new pulumi.Config();
const siteId = config.requireSecret("siteId"); // We'll set this next
// Deploy a robots.txt resource
const robotsTxt = new webflow.RobotsTxt("my-robots", {
siteId: siteId,
content: `User-agent: *
Allow: /
User-agent: Googlebot
Allow: /
`, // Standard robots.txt allowing all crawlers
});
// Export the site ID for reference
export const deployedSiteId = siteId;# Find your Webflow site ID (24-character hex string) from Webflow Designer
# You can find it in: Project Settings > API & Webhooks > Site ID
# Set it in your Pulumi config
pulumi config set siteId --secret
# When prompted, paste your 24-character site ID and press EnterNeed help finding your site ID?
- In Webflow Designer, go to Project Settings (bottom of sidebar)
- Click API & Webhooks
- Your Site ID is displayed as a 24-character hex string (e.g.,
5f0c8c9e1c9d440000e8d8c3)
# Install dependencies
npm install
# Preview the changes Pulumi will make
pulumi previewExpected output:
Previewing update (dev):
Type Name Plan Info
+ webflow:RobotsTxt my-robots create
Resources:
+ 1 to create
Do you want to perform this update?
> yes
no
details
# Deploy to your Webflow site
pulumi upWhen prompted, select yes to confirm the deployment.
Expected output:
Type Name Plan Status
+ webflow:RobotsTxt my-robots create created
Outputs:
deployedSiteId: "5f0c8c9e1c9d440000e8d8c3"
Resources:
+ 1 created
Duration: 3s
- Open Webflow Designer
- Go to Project Settings β SEO β robots.txt
- You should see the robots.txt content you deployed!
# Remove the resource from Webflow
pulumi destroy
# When prompted, select 'yes' to confirmCongratulations! You've successfully deployed your first Webflow resource using Pulumi! π
- Log in to Webflow
- Go to Account Settings (bottom left of screen)
- Click API Tokens in the left sidebar
- Click Create New Token
- Name it something descriptive (e.g., "Pulumi Provider")
- Grant the following permissions:
- Sites: Read & Write
- Redirects: Read & Write (if using Redirect resources)
- Robots.txt: Read & Write (if using RobotsTxt resources)
- Click Create Token
- Copy the token immediately - Webflow won't show it again
# Option 1: Pulumi config (recommended - encrypted in Pulumi.dev.yaml)
pulumi config set webflow:apiToken --secret
# Option 2: Environment variable
export WEBFLOW_API_TOKEN="your-token-here"
# Option 3: Code (NOT RECOMMENDED for production - security risk)
# Don't do this in production code!- β
DO use Pulumi config with
--secretflag (encrypts locally) - β DO use environment variables in CI/CD pipelines
- β
DO keep tokens in
.envfiles (never commit to Git) - β DON'T commit tokens to Git
- β DON'T hardcode tokens in your Pulumi program
- β DON'T share tokens via email or chat
- π Rotate tokens regularly - Create new tokens and retire old ones monthly
For GitHub Actions or other CI/CD:
# .github/workflows/deploy.yml
env:
WEBFLOW_API_TOKEN: ${{ secrets.WEBFLOW_API_TOKEN }}
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pulumi/actions@v6
with:
command: up# Check Pulumi is installed
pulumi version
# Check the Webflow provider is available
pulumi plugin ls | grep webflow
# Should output something like:
# resource webflow 1.0.0-alpha.0+dev# Inside a Pulumi project directory:
pulumi preview
# If authentication fails, you'll see an error like:
# Error: Unauthorized - Check your Webflow API token-
In Webflow Designer:
- Check that your resource appears in the appropriate settings (robots.txt, redirects, etc.)
- Verify the configuration matches what you deployed
-
Via Pulumi:
pulumi stack output deployedSiteId # Should output your 24-character site ID -
Via Command Line:
# View your stack's resources pulumi stack select dev pulumi stack # View detailed resource information pulumi stack export | jq .
- Troubleshooting Guide - Comprehensive error reference and solutions
- FAQ - Answers to common questions
- Examples - Working code for all resources
- GitHub Issues - Report bugs
- GitHub Discussions - Ask questions
Track all infrastructure changes in Git for compliance and auditability. Features include automatic audit trails, code review via pull requests, and SOC 2/HIPAA/GDPR-ready reporting.
See the Version Control Guide for Git workflows, commit conventions, and audit report generation.
The Quick Start uses TypeScript. Complete examples for all languages are in examples/quickstart/:
- TypeScript | Python | Go
Each includes setup instructions, complete code, and a README.
Once you've completed the Quick Start:
- Deploy multiple resource types (Redirects, Sites, etc.)
- Use the examples/ directory for real-world patterns
- Check docs/ for comprehensive reference documentation
- Create separate stacks for dev, staging, and production
- Use different site IDs for each environment
- See: examples/stack-config/
- Multi-site management: examples/multi-site/
- CI/CD integration: examples/ci-cd/
- Logging and troubleshooting: examples/troubleshooting-logs/
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Report bugs - Found an issue? Create a GitHub issue
- Submit improvements - Have an idea? Create a discussion
- Contribute code - Fork the repo, make changes, and submit a pull request
- Improve documentation - Help us document features and patterns
This project is licensed under the MIT License - see LICENSE file for details.
| Problem | Solution |
|---|---|
| Plugin not found | pulumi plugin install resource webflow |
| Invalid token | Check Webflow Account Settings β API Tokens |
| Invalid site ID | Verify in Webflow Designer β Project Settings β API & Webhooks |
| Deployment times out | Check internet connection, try again |
| Token format error | Ensure you're using the full API token (not just a prefix) |
| Site not found | Verify site ID matches the site where you want to deploy |
| Need detailed logs | Enable debug logging: PULUMI_LOG_LEVEL=debug pulumi up - See Logging Guide |
For more troubleshooting help and detailed logging documentation:
- Logging and Debugging Guide - Comprehensive guide to structured logging features
- Troubleshooting Guide - Common issues and detailed solutions
- Changelog - Release history and notable changes
Ready to get started? Jump to Quick Start above! π