docs
EnglishChatigram website ↗Open Chatigram
Recipes

Store webhook requests in a database

Receive an event and insert a request record into a selected Chatigram table, with destination mappings supplied during setup.

Store webhook requests in a database Expand a node to see its configuration

Swipe sideways to explore the workflow branches.

  • TRIGGERWebhook

    Example configuration

    {
      "secretKey": "",
      "extractors": [
        {
          "$tag": "GetWholeAsString",
          "variableName": "payload"
        }
      ]
    }
      • saveRequestInsert Database Row

        Example configuration

        {
          "databaseId": null,
          "tableId": null,
          "columns": [],
          "values": []
        }
          • operationSucceededCheck condition

            Example configuration

            {
              "condition": {
                "$tag": "StringComparison",
                "operator": "IS_EMPTY",
                "variable": "saveRequest.error",
                "rightOperand": {
                  "$tag": "Constant",
                  "value": ""
                },
                "ignoreCase": false,
                "valueType": "TEXT"
              }
            }
            • Yes
              • storedRowSet Variable

                Example configuration

                {
                  "variableValue": [
                    {
                      "$tag": "Variable",
                      "name": "saveRequest.rowId"
                    }
                  ]
                }
            • No
              • storageFailureSet Variable

                Example configuration

                {
                  "variableValue": [
                    {
                      "$tag": "Constant",
                      "value": "The request was not stored; inspect the run."
                    }
                  ]
                }

This diagram follows the downloadable workflow. Edit and run it in Chatigram.Swipe the diagram to explore its branches.

Plan availability #

Feature Free Starter Pro Enterprise
Databases Not included 1 2 Unlimited
Active workflows 3 10 45 Unlimited

Allowances follow the published Chatigram pricing page. Your organization’s Billing & Plans screen confirms its subscription and current usage. Plans can change. Plan information reviewed 2026-11-10.

The business outcome #

Receive an event and insert a request record into a selected Chatigram table, with destination mappings supplied during setup.

This is an importable starter using Chatigram’s current native nodes. It needs destination-specific setup; it does not imply a dedicated connector for every CRM or ERP brand. Check your software’s API documentation and permissions.

Before you begin #

Set a fresh webhook secret, select the database/table, map request fields to columns, and configure the sending service. An empty values list must be mapped before use.

The reserved example.invalid endpoint is deliberately non-working. No real customer data, account credentials, or private resource identifiers are embedded. Keep the workflow disabled until setup is complete.

Configure the workflow #

  1. Prepare a request table with the fields your process actually needs, such as external event ID, request text, and processing state.
  2. Configure the Webhook trigger’s protected request details in the sending service. The whole payload is available as trigger.payload; add field extractors for individual values.
  3. Select the destination table in saveRequest and map the required fields using the variable picker. The starter intentionally has no column IDs or value mappings.
  4. Preserve an external event identifier and design a duplicate check if the sender can retry the same event.

Test the outcomes #

  • Send one harmless test event and inspect the created record.
  • Test the sender’s repeated-delivery behavior before enabling real intake.
  • Verify that only the needed fields are stored.

Open Workflow Activity after the test. Import validation checks the definition; it does not prove a remote API accepted the business operation. Check the destination before repeating a send or write.

Make it your own #

Put reusable public settings in Properties, configure credentials through the protected connection options, and keep explicit error paths. Explore App Connections for existing provider-specific actions you can substitute through the editor.

Use the copy controls below for the complete workflow or its first node. The diagram and downloads come from the same definition. Use Share recipe to share the guide’s public address.

READY TO CUSTOMIZE

Try this in Chatigram

Setup required. Set a fresh webhook secret, select the database/table, map request fields to columns, and configure the sending service. An empty values list must be mapped before use. Placeholder endpoints use example.invalid and cannot call a real business service. Keep the workflow disabled until you finish the setup and review its effects.

Download JSON
View workflow JSON
Workflow JSON
{
  "format": "chatigram-workflow",
  "version": 1,
  "metadata": {
    "sourceName": "Store webhook requests in a database",
    "importHelp": {
      "note": "Setup required. Set a fresh webhook secret, select the database/table, map request fields to columns, and configure the sending service. An empty values list must be mapped before use. Placeholder endpoints use example.invalid and cannot call a real business service. Keep the workflow disabled until you finish the setup and review its effects."
    }
  },
  "workflow": {
    "instruction": null,
    "multiLanguageSupport": null,
    "properties": [],
    "trigger": {
      "$tag": "Trigger",
      "type": "WEBHOOK",
      "data": {
        "secretKey": "",
        "extractors": [
          {
            "$tag": "GetWholeAsString",
            "variableName": "payload"
          }
        ]
      }
    },
    "nodes": [
      {
        "$tag": "Node",
        "id": "d0c00000-0000-4000-8000-000000000001",
        "name": "saveRequest",
        "parentId": null,
        "branchIndex": 0,
        "type": "DATABASE_INSERT_ROW",
        "data": {
          "databaseId": null,
          "tableId": null,
          "columns": [],
          "values": []
        }
      },
      {
        "$tag": "Node",
        "id": "d0c00000-0000-4000-8000-000000000004",
        "name": "operationSucceeded",
        "parentId": "d0c00000-0000-4000-8000-000000000001",
        "branchIndex": 0,
        "type": "IF_STATEMENT",
        "data": {
          "condition": {
            "$tag": "StringComparison",
            "operator": "IS_EMPTY",
            "variable": "saveRequest.error",
            "rightOperand": {
              "$tag": "Constant",
              "value": ""
            },
            "ignoreCase": false,
            "valueType": "TEXT"
          }
        }
      },
      {
        "$tag": "Node",
        "id": "d0c00000-0000-4000-8000-000000000002",
        "name": "storedRow",
        "parentId": "d0c00000-0000-4000-8000-000000000004",
        "branchIndex": 0,
        "type": "SET_VARIABLE",
        "data": {
          "variableValue": [
            {
              "$tag": "Variable",
              "name": "saveRequest.rowId"
            }
          ]
        }
      },
      {
        "$tag": "Node",
        "id": "d0c00000-0000-4000-8000-000000000003",
        "name": "storageFailure",
        "parentId": "d0c00000-0000-4000-8000-000000000004",
        "branchIndex": 1,
        "type": "SET_VARIABLE",
        "data": {
          "variableValue": [
            {
              "$tag": "Constant",
              "value": "The request was not stored; inspect the run."
            }
          ]
        }
      }
    ],
    "gotos": []
  }
}
Keep building.Need help with this? Explore troubleshooting ↗

Find an answer. Try “welcome workflow”, “database”, or “Telegram”.