---
name: webflow-form-submissions-digest
description: "Weekday mornings: every Webflow form submission since the last digest, grouped by form, one line each, with obvious spam set aside. Use when the user asks for this, or when it runs on a schedule."
---

# Webflow form submissions digest

Weekday mornings: every Webflow form submission since the last digest, grouped by form, one line each, with obvious spam set aside.

Webflow form notifications land in one inbox, mixed with everything else, and the spam ones look exactly like the real ones until you open them. For an agency running several client sites, or a small team whose only lead source is the contact form, real enquiries get answered a day late.

The agent reads the submissions through the Webflow Data API each weekday morning, sets aside the spam (link drops, SEO pitches, gibberish), and lists each real enquiry in one line: who, from where, and what they want. Monday covers the weekend.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A Webflow site API token with read scopes (`sites:read`, `forms:read`), in `WEBFLOW_API_TOKEN`.
- Or Webflow's MCP server (`https://mcp.webflow.com/mcp`), if the tools it lists in your client include form submissions; it can also edit sites, so keep the skill to reads.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Find the site and its forms** (Webflow): `GET /v2/sites` for the `site_id`, then `GET /v2/sites/{site_id}/forms` for each form's `displayName`. For an agency, repeat per client site and label each section.
2. **Read new submissions** (Webflow): `GET /v2/sites/{site_id}/form_submissions?limit=100` and page with `offset` up to `pagination.total`. The API has no date filter, so keep submissions whose `dateSubmitted` is after the last run (Friday 9:00 on a Monday).
3. **Set spam aside**: Mark a submission as spam when the message is mostly links, pitches SEO, backlinks or crypto, repeats another submission word for word, or the name and message are gibberish. Keep the reason; never delete anything in Webflow.
4. **Summarize each enquiry**: From `formResponse`, take the name, email domain or company, and the ask in under 15 words. Flag submissions that mention budget, a deadline or a meeting.
5. **Post the digest**: Group by form, real enquiries first with the flagged ones on top, then a count of spam with one example reason.

## Route B: the browser

### What you need

- Signed in to Webflow with a workspace member who can open the site's settings (Site settings are hidden from guests and from Designer-only seats on some plans).

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://webflow.com/dashboard. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Open the site's form submissions**: In the Webflow dashboard, pick the workspace and open the site's **Site settings** (the gear on the site card), then the **Forms** tab. The **Form submissions** table lists every submission with the form name, the date and the fields. For an agency, repeat per client site.
2. **Read what arrived since the last digest**: The table is newest first. Read down until the date passes yesterday 9:00 (Friday 9:00 on a Monday). If the site gets more than a page of submissions a day, click **Download CSV** and filter the file by date instead.
3. **Set spam aside**: Mark a submission as spam when the message is mostly links, pitches SEO, backlinks or crypto, repeats another word for word, or the name and message are gibberish. Keep the reason; do not delete rows in Webflow.
4. **Summarize and post**: For each real submission: form, name, company or email domain, and the ask in under 15 words. Flag anything mentioning budget, a deadline or a meeting. Group by form, flagged ones on top, then the spam count with one example reason.

Note: The Forms tab is the better route for sites with a few submissions a day: it needs no token and shows every field. The CSV download is the only way to get more than the table shows at once. Sites on the old Webflow hosting plans show the same tab under **Project settings**.

## The report

- **Counts**: real submissions and spam since the last digest.
- **By form**: name, company or domain, the ask in one line, and when.
- **Flagged**: enquiries with a budget, a deadline or a meeting request.
- **Spam**: a count and the most common reason.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "webflow-form-submissions-digest/<date of this run, e.g. 2026-10-16>",
  "item_key": "webflow-form-submissions-digest",
  "project": "example.com",
  "source": "Webflow form submissions digest skill",
  "kind": "update",
  "title": "8 new form submissions, 3 set aside as spam",
  "summary": "**5 real enquiries** since yesterday. One demo request mentions a **$40k budget** and a January launch.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Form",
          "From",
          "Ask"
        ],
        "rows": [
          [
            "Demo request",
            "Priya N., northwind.io",
            "Demo for 25 seats, $40k budget, launch in January"
          ],
          [
            "Demo request",
            "Tom B., halcyon.co",
            "Wants to see the Shopify integration"
          ],
          [
            "Contact",
            "Lea M., gmail.com",
            "Can she pay yearly by invoice?"
          ],
          [
            "Contact",
            "Sam K., bluepeak.org",
            "Nonprofit discount?"
          ],
          [
            "Newsletter",
            "j.ortiz@fastmail.com",
            "Signed up from the pricing page"
          ]
        ]
      }
    },
    {
      "type": "Badges",
      "props": {
        "items": [
          {
            "label": "Demo request 2",
            "tone": "accent"
          },
          {
            "label": "Contact 2"
          },
          {
            "label": "Newsletter 1"
          },
          {
            "label": "Spam 3",
            "tone": "neutral"
          }
        ]
      }
    }
  ]
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

## Run it on a schedule

Suggested: Weekdays at 9:00 (`0 9 * * 1-5`). From cron, with the agent signed in on that machine:

```bash
0 9 * * 1-5 claude -p "Run the webflow-form-submissions-digest skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/webflow-form-submissions-digest#schedule

Source: https://briefkin.dev/skills/webflow-form-submissions-digest
