{
  "name": "Weekly Metrics → Slack Notification — Purrly",
  "flow": [
    {
      "id": 1,
      "module": "builtin:BasicScheduler",
      "version": 1,
      "parameters": {
        "label": "Every Monday 09:00 UTC",
        "schedule": "0 9 * * 1"
      },
      "mapper": {},
      "metadata": {
        "designer": { "x": 0, "y": 0 },
        "restore": {
          "parameters": {
            "schedule": { "value": "0 9 * * 1" }
          }
        },
        "parameters": [
          { "name": "schedule", "type": "text", "label": "Cron expression" },
          { "name": "label", "type": "text", "label": "Schedule name" }
        ]
      }
    },
    {
      "id": 2,
      "module": "http:ActionMakeRequest",
      "version": 1,
      "parameters": {
        "url": "https://api.stripe.com/v1/charges?created[gte]={{formatDate(addDays(now; -7); \"X\")}}&limit=100"
      },
      "mapper": {
        "method": "GET",
        "headers": [
          {
            "name": "Authorization",
            "value": "Bearer [STRIPE_SECRET_KEY]"
          }
        ],
        "qs": {}
      },
      "metadata": {
        "designer": { "x": 300, "y": 0 },
        "restore": {
          "parameters": {
            "url": {
              "value": "https://api.stripe.com/v1/charges?created[gte]={{formatDate(addDays(now; -7); \"X\")}}&limit=100"
            }
          }
        },
        "parameters": [
          { "name": "url", "type": "url", "label": "URL" },
          { "name": "method", "type": "text", "label": "Method" }
        ]
      }
    },
    {
      "id": 3,
      "module": "builtin:BasicAggregator",
      "version": 1,
      "parameters": {
        "feeder": 2,
        "rowType": "uploads/files/stripe-charge-row.yaml"
      },
      "mapper": {
        "amount_cents": "{{2.amount}}",
        "currency": "{{2.currency}}",
        "paid": "{{2.paid}}",
        "status": "{{2.status}}"
      },
      "metadata": {
        "designer": { "x": 600, "y": 0 },
        "parameters": [{ "name": "feeder", "type": "uploads", "label": "Source module" }],
        "restore": {}
      }
    },
    {
      "id": 4,
      "module": "http:ActionMakeRequest",
      "version": 1,
      "parameters": {
        "url": "https://api.notion.com/v1/databases/[CRM_DATABASE_ID]/query"
      },
      "mapper": {
        "method": "POST",
        "headers": [
          {
            "name": "Authorization",
            "value": "Bearer [NOTION_API_KEY]"
          },
          {
            "name": "Notion-Version",
            "value": "2022-06-28"
          },
          {
            "name": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "filter": {
            "property": "Created",
            "date": {
              "on_or_after": "{{formatDate(addDays(now; -7); \"YYYY-MM-DD\")}}"
            }
          },
          "page_size": 100
        }
      },
      "metadata": {
        "designer": { "x": 900, "y": 0 },
        "restore": {
          "parameters": {
            "url": { "value": "https://api.notion.com/v1/databases/[CRM_DATABASE_ID]/query" }
          }
        },
        "parameters": [
          { "name": "url", "type": "url", "label": "URL" },
          { "name": "body", "type": "text", "label": "Body (JSON)" }
        ]
      }
    },
    {
      "id": 5,
      "module": "http:ActionMakeRequest",
      "version": 1,
      "parameters": {
        "url": "https://api.stripe.com/v1/charges?created[gte]={{formatDate(addDays(now; -7); \"X\")}}&status=succeeded&limit=100"
      },
      "mapper": {
        "method": "GET",
        "headers": [
          {
            "name": "Authorization",
            "value": "Bearer [STRIPE_SECRET_KEY]"
          }
        ]
      },
      "metadata": {
        "designer": { "x": 1200, "y": 0 },
        "restore": {
          "parameters": {
            "url": {
              "value": "https://api.stripe.com/v1/charges?created[gte]={{formatDate(addDays(now; -7); \"X\")}}&status=succeeded&limit=100"
            }
          }
        },
        "parameters": [{ "name": "url", "type": "url", "label": "URL" }]
      }
    },
    {
      "id": 6,
      "module": "builtin:BasicAggregator",
      "version": 1,
      "parameters": {
        "feeder": "1-2-4-5",
        "rowType": "uploads/files/weekly-metrics-row.yaml"
      },
      "mapper": {
        "week_start": "{{formatDate(addDays(now; -7); \"YYYY-MM-DD\")}}",
        "revenue_cents": "{{sum(3.amount_cents)}}",
        "currency": "{{ifempty(3.currency; \"USD\")}}",
        "charges_count": "{{length(3)}}",
        "new_leads": "{{length(4.results)}}",
        "invoices_paid": "{{length(5.data)}}"
      },
      "metadata": {
        "designer": { "x": 1500, "y": 0 },
        "parameters": [{ "name": "feeder", "type": "uploads", "label": "Source modules" }],
        "restore": {}
      }
    },
    {
      "id": 7,
      "module": "slack:ActionCreateMessage",
      "version": 1,
      "parameters": {},
      "mapper": {
        "channel": "#metrics",
        "text": "📊 *Weekly Metrics — week of {{6.week_start}}*\n\n💰 *Revenue:* {{round(div(6.revenue_cents; 100); 2)}} {{6.currency}}\n🧾 *Invoices paid:* {{6.invoices_paid}}\n📥 *New leads:* {{6.new_leads}}\n\n_Have a great week — Purrly_",
        "as_user": true
      },
      "metadata": {
        "designer": { "x": 1800, "y": 0 },
        "parameters": [
          { "name": "channel", "type": "channel", "label": "Channel" },
          { "name": "text", "type": "text", "label": "Message text" }
        ],
        "restore": {}
      }
    }
  ],
  "metadata": {
    "instant": true,
    "version": 1,
    "scenario": {
      "roundtrips": 1,
      "maxErrors": 3,
      "autoCommit": true,
      "autoCommitTriggerLast": true,
      "sequential": true,
      "confidential": false,
      "dataloss": false,
      "dlq": false,
      "freshVariables": false
    },
    "designer": {
      "orphans": []
    },
    "zone": "eu1.make.com"
  }
}
