{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "WhatsApp Payment Reminder via MoltFlow",
  "tags": [
    {
      "name": "whatsapp"
    },
    {
      "name": "automation"
    },
    {
      "name": "moltflow"
    },
    {
      "name": "payments"
    },
    {
      "name": "reminders"
    }
  ],
  "nodes": [
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000010",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -280
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 310,
        "content": "## WhatsApp Payment Reminder\nAutomatically sends personalized WhatsApp payment reminders every morning at 9 AM using the [MoltFlow API](https://molt.waiflow.app).\n\n**How it works:**\n1. Schedule fires daily at 9 AM\n2. Code node builds a contact list with payment details\n3. Each contact gets a personalized WhatsApp message\n4. Results are logged as success or failure"
      },
      "typeVersion": 1
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000011",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -280
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 230,
        "content": "## Setup (3 min)\n1. Create a [MoltFlow account](https://molt.waiflow.app)\n2. Connect WhatsApp (scan QR)\n3. Generate API key > Sessions > API Keys tab\n4. Add credential: Header Auth > Name: X-API-Key > Value: your key\n5. Edit Prepare Contacts with your data\n6. Activate!"
      },
      "typeVersion": 1
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000001",
      "name": "Daily 9 AM Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000002",
      "name": "Prepare Contacts",
      "type": "n8n-nodes-base.code",
      "position": [
        220,
        0
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const SESSION_ID = 'YOUR_SESSION_ID';\nconst contacts = [\n  { phone: '1234567890', name: 'Alice Johnson', amount: '$150.00', due_date: '2026-02-20' },\n  { phone: '0987654321', name: 'Bob Smith', amount: '$320.00', due_date: '2026-02-22' }\n];\nconst messageTemplate = 'Hi {{name}}, this is a friendly reminder that your payment of {{amount}} is due on {{due_date}}. Please let us know if you have any questions. Thank you!';\nconst items = contacts.map(contact => {\n  const message = messageTemplate.replace('{{name}}', contact.name).replace('{{amount}}', contact.amount).replace('{{due_date}}', contact.due_date);\n  return { json: { session_id: SESSION_ID, chat_id: contact.phone + '@c.us', message, contact_name: contact.name, contact_phone: contact.phone } };\n});\nreturn items;"
      },
      "typeVersion": 2
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000003",
      "name": "Send WhatsApp Reminder",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        440,
        0
      ],
      "parameters": {
        "url": "https://apiv2.waiflow.app/api/v2/messages/send",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "jsonBody": "={{ JSON.stringify({ session_id: $json.session_id, chat_id: $json.chat_id, message: $json.message }) }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000004",
      "name": "Message Sent?",
      "type": "n8n-nodes-base.if",
      "position": [
        660,
        0
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "condition-1",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.statusCode }}",
              "rightValue": 201
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000005",
      "name": "Log Success",
      "type": "n8n-nodes-base.code",
      "position": [
        880,
        -100
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const items = $input.all();\nconst results = items.map(item => {\n  const data = item.json.body || item.json;\n  return { status: 'sent', contact: item.json.contact_name || 'unknown', message_id: data.id || 'N/A', wa_status: data.status || 'N/A' };\n});\nreturn [{ json: { summary: 'Successfully sent ' + results.length + ' payment reminder(s)', results } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "a1b2c3d4-1111-4000-a000-000000000006",
      "name": "Log Failure",
      "type": "n8n-nodes-base.code",
      "position": [
        880,
        100
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const items = $input.all();\nconst failures = items.map(item => {\n  const data = item.json.body || item.json;\n  return { status: 'failed', contact: item.json.contact_name || 'unknown', error: data.detail || data.message || 'HTTP ' + item.json.statusCode, status_code: item.json.statusCode };\n});\nreturn [{ json: { summary: 'Failed to send ' + failures.length + ' reminder(s)', failures } }];"
      },
      "typeVersion": 2
    }
  ],
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Message Sent?": {
      "main": [
        [
          {
            "node": "Log Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Failure",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Contacts": {
      "main": [
        [
          {
            "node": "Send WhatsApp Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily 9 AM Trigger": {
      "main": [
        [
          {
            "node": "Prepare Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send WhatsApp Reminder": {
      "main": [
        [
          {
            "node": "Message Sent?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}