{
  "info": {
    "name": "Commune: Win back readers before they leave",
    "description": "Most unsubscribes are decided weeks before the click. Commune follows how each reader's engagement is moving, so you can see who is cooling off and reach out while they are still listening.\n\nThe walkthrough: https://usecommune.dev/use-cases/win-back-readers\n\nSet the `apiKey` variable to a key from https://usecommune.com/settings/api-keys, then run the requests in order.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.usecommune.com"
    },
    {
      "key": "apiKey",
      "value": ""
    },
    {
      "key": "version",
      "value": "2026-08-26"
    },
    {
      "key": "newsletter",
      "value": "example-letter"
    }
  ],
  "item": [
    {
      "name": "1. Find your newsletter",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Commune-Version",
            "value": "{{version}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/newsletters",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "newsletters"
          ]
        },
        "description": "A key reaches one newsletter or several, whichever its owner ticked when creating it. List them and pick yours by `handle` (or `id`, either works in a path): every other request names it."
      }
    },
    {
      "name": "2. Ask for readers who are cooling off, with their addresses",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Commune-Version",
            "value": "{{version}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/newsletters/{{newsletter}}/insights?velocity=cooling&status=dormant&status=reader&expand=subscriber&limit=100",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "newsletters",
            "{{newsletter}}",
            "insights"
          ],
          "query": [
            {
              "key": "velocity",
              "value": "cooling"
            },
            {
              "key": "status",
              "value": "dormant"
            },
            {
              "key": "status",
              "value": "reader"
            },
            {
              "key": "expand",
              "value": "subscriber"
            },
            {
              "key": "limit",
              "value": "100"
            }
          ]
        },
        "description": "Commune scores every reader with a Commune account on what they did in the last fourteen days (`t1_score`) against the fourteen before (`t2_score`), and places them on a ladder from `dormant` to `superfan`. `velocity=cooling` keeps the readers whose activity fell, and `status`, repeated, keeps the two lowest bands: the readers you are about to lose.\n\n`expand=subscriber` puts each reader's full subscriber record, email address and subscription `status` included, in the same response. That is one request per page of up to 100 readers, not one more per reader. It needs `audience: read` on the key as well as `insights: read`: without it, the request is refused with `403 insufficient_scope` rather than answered without the addresses.\n\nThe list comes back highest `total_score` first. While `pagination.has_more` is `true`, send the same request again with `cursor` set to `pagination.next_cursor`."
      }
    }
  ]
}
