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.
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." } ] }
- Yes
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 #
- Prepare a request table with the fields your process actually needs, such as external event ID, request text, and processing state.
- 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.
- 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.
- 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.
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.
View 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": []
}
}