# Framer

The Framer Integration step allows you to connect your AirOps workflows directly with your Framer project. This integration enables you to manage CMS collections, create and update collection items, and publish your site programmatically.

### How to Configure the Framer Integration Step

#### Authentication

Before using the Framer integration in your workflows, you must first connect your Framer project in the AirOps Settings:

1. Navigate to ⚙ Settings > Integrations
2. Find the Framer section and click "Configure"
3. Enter your **Project URL** (e.g. `https://my-site.framer.app`)
4. Enter your **Personal Access Token** from Framer

To generate a Personal Access Token in Framer, go to your Framer account settings and create a new token with access to your project.

#### Action Types

The Framer Integration supports the following actions:

* **List Collections**: Retrieve all CMS collections in your Framer project
* **Get Collection Fields**: Retrieve the field definitions for a specific collection
* **List Collection Items**: Retrieve all items in a collection
* **Upsert Collection Item**: Create a new collection item or update an existing one
* **Delete Collection Items**: Remove one or more items from a collection
* **Publish Site**: Publish your Framer site

#### Action-Specific Parameters

**List Collections**

No additional parameters required. Returns all collections in the project with their IDs, names, and management type.

**Get Collection Fields**

* **Collection**: The collection to retrieve fields for (required)

Returns all field definitions for the collection, including field IDs, names, and types.

**List Collection Items**

* **Collection**: The collection to list items from (required)

Returns all items in the collection with their IDs, slugs, and draft status. Note: field data is not included in the response.

**Upsert Collection Item**

* **Collection**: The collection to create or update an item in (required)
* **Slug**: URL-friendly identifier for the item — must be unique within the collection (required)
* **Item ID (Optional)**: The ID of an existing item to update. If omitted, a new item is created.
* **Field Data (Optional)**: A JSON object mapping field IDs to typed values. Example:

  ```json
  {
    "fieldId": { "type": "string", "value": "Hello World" }
  }
  ```
* **Status (Optional)**: Set the item to `Published` or `Draft`. Draft items are excluded from published output.

**Delete Collection Items**

* **Collection**: The collection to delete items from (required)
* **Item IDs**: Comma-separated list of item IDs to delete (required). Example: `item-1, item-2, item-3`

**Publish Site**

No additional parameters required. Publishes the entire Framer site and returns deployment information.

### Common Use Cases

* Generating AI-written content and pushing it directly to a Framer CMS collection
* Keeping a Framer site in sync with an external data source
* Automating product or portfolio updates by upserting collection items from a spreadsheet or database
* Triggering a site publish at the end of a content pipeline after all updates are complete

### Error Handling

By default, the Framer Integration step will terminate the workflow if it fails. You can configure it to continue by selecting "Continue" instead of "Terminate Workflow" in the step settings.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airops.com/context/overview/integrations/framer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
