Automatically archive CMS items in Webflow with Make.com

Have you ever had the problem that expired events, promotions, or other temporary content still remain visible on your Webflow website? In this blog, I'll show you how to fully automate this with Make.com (formerly Integromat).

Written by:

First Wongsrila
29/8/2025
Automatically archive CMS items in Webflow with Make.com

Webflow has no built-in functionality to automatically archive CMS items based on an expiration date. This means manually going through your collections to archive expired items - a time-consuming process that is often forgotten.

The solution: Make.com automation

I've built an automation that:

  • Retrieves all CMS items in a collection
  • Checks if items have expired (end date < today)
  • Automatically archives expired items
  • Works with Webflow Localization (multiple languages)

Step 1: Get CMS items

The first step is to fetch all live CMS items from your Webflow collection.

Webflow API Call configuration:

Method: GET
URL: collections/{{YOUR_COLLECTION_ID}}/items/live
Headers: 
  Content-Type: application/json
Query String:
  cmsLocaleId: {{YOUR_LOCALE_ID}}

Important note for Webflow Localization: The CMS Local ID parameter is crucial when using Webflow Localization. Without this parameter, your automation only works on the main locale. More about this later in this blog.

API Response: The API returns all CMS items in an array format:

Step 2: Iterate Through Each Item

With the Iterator module, you can go through each individual CMS item to process them separately.

Flow Control configuration:

Type: Iterator
Array: body: items[]

Step 3: Filter for expired items

This is where the logic takes place. We only filter items that:

  1. Have an end date that is earlier than today
  2. Not archived yet

Filter conditions:

// Conditie 1: Datum controle
formatDate(fieldData: einddatum ; YYYY-MM-DD) Earlier than formatDate(now ; YYYY-MM-DD)

// EN // Conditie 2: Archive status controle  
isArchived Equal to false

Why this formatting? By converting both dates into the same YYYY-MM-DD format, we ensure that the comparison always works correctly, regardless of the original date formatting in Webflow.

Step 4: Archive Items

For items that pass through the filter, we perform a PATCH API call to archive them.

Webflow PATCH API configuration:

Method: PATCH  
URL: collections/{{YOUR_COLLECTION_ID}}/items/{{id}}/live?skipInvalidFiles=true
Headers:
  Content-Type: application/json

{
  "isArchived": true,
  "fieldData": {},
  "cmsLocaleId": "{{YOUR_LOCALE_ID}}"
}

Why an empty FieldData? By keeping FieldData empty, we only change the archive status without touching other fields. This prevents accidental changes to your content.

Webflow Localization: The Challenge

Here's where it gets interesting. If you use Webflow Localization, the standard Webflow modules in Make only work on the main locale. This means that items in other languages are not automatically archived.

The Solution: Dual Flow with Router

To solve this, I use a Router module that splits the flow into multiple routes - one for each locale.

Route 1 - Main Locale:

// In GET API call
Query String: cmsLocaleId = "{{YOUR_LOCALE_ID}}"

// In PATCH API call  
Body: {
  "isArchived": true,
  "fieldData": {},
  "cmsLocaleId": "{{YOUR_LOCALE_ID}}"
}

Route 2 - Second locale:

// In GET API call
Query String: cmsLocaleId = "{{YOUR_SECOND_LOCALE_ID}}"

// In PATCH API call
Body: {
  "isArchived": true, 
  "fieldData": {},
  "cmsLocaleId": "{{YOUR_SECOND_LOCALE_ID}}"
}

How to find your Local IDs

You can find your local IDs by making an API call to your Webflow site:

API Call to fetch locales:

The response shows you all available locales:

{
  "locales": {
    "primary": {
      "id": "686e63afec9cfa367eaa1fa1", 
      "cmsLocaleId": "686e63afec9cfa367eaa1fa2",
      "displayName": "NL"
    },
    "secondary": [
      {
        "id": "686e8cc3474b9171c378488f",
        "cmsLocaleId": "686e8cc3474b9171c3784892", 
        "displayName": "EN"
      }
    ]
  }
}

Important: Use the CMS Local ID value, not the ordinary id for your CMS operations.

Automation scheduling

I set the automation to run once a day, in the middle of the night (for example, at 00:01). This ensures that:

  • The automation runs when there is little website traffic
  • Items are archived before visitors can see them
  • There is no impact on website performance during the day

You can set this up with Make's Schedule trigger that runs at a fixed time every day.

With this Make.com automation allows you to fully automatically archive expired CMS items in Webflow, even when you use Webflow Localization. The automation runs reliably and ensures that your website always shows current, relevant content.

Key points to remember:

  • Replace {{YOUR_COLLECTION_ID}} through your own Webflow collection ID
  • Replace {{YOUR_LOCALE_ID}} through your own local IDs
  • In the PATCH URL, use {{id}} to extract the specific item ID from the iterator
  • Always test with a few items before fully implementing automation

Written by:

First Wongsrila

First Wongsrila

first@weareboring.nl