WP Manifestindependent plugin directory
manifest / forms / monday-nf-integration

Monday.com Integration for Ninja Forms

WordPress plug-in to send NinjaForms submissions to a Monday.com board.

by Ocupop · github.com/paulstroot/monday-nf-integration

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/paulstroot/monday-nf-integration/archive/refs/heads/main.zip

WordPress plugin that connects Ninja Forms to Monday.com boards via API.

Features

  • Multiple form-to-board connections - Connect different forms to different boards
  • One form to multiple boards - Send the same form data to multiple Monday.com boards
  • Field key mapping - More maintainable than using field IDs
  • Dynamic date/time values - Insert current date, time, or timestamp automatically
  • Static text values - Set columns to predefined text values
  • Group ID support - Specify which group/section items are added to
  • Active/inactive toggle - Enable or disable connections without deleting them
  • Debug logging - Troubleshoot issues with detailed logs
  • Visual dashboard - Manage all connections from one place
  • AJAX field key loader - Easily see available field keys when mapping

Installation

  1. Upload the monday-nf-integration folder to /wp-content/plugins/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Go to Monday.com NF menu in WordPress admin
  4. Add your first connection

Requirements

  • WordPress 5.0 or higher
  • PHP 7.0 or higher
  • Ninja Forms plugin (active)
  • Monday.com account with API access

File Structure

monday-nf-integration/
├── monday-nf-integration.php          # Main plugin file
├── README.md                          # This file
├── uninstall.php                      # Cleanup script
├── assets/
│   ├── css/
│   │   └── admin-style.css           # Admin styles
│   └── js/
│       └── admin-script.js           # Admin JavaScript
├── includes/
│   ├── class-monday-nf-connector.php  # Main plugin class
│   ├── class-monday-nf-admin.php      # Admin interface
│   ├── class-monday-nf-connection.php # Connection CRUD operations
│   ├── class-monday-nf-api.php        # Monday.com API handler
│   └── class-monday-nf-submission.php # Form submission processor
└── views/
    ├── admin-dashboard.php             # Dashboard template
    ├── admin-connection-form.php       # Add/Edit form template
    └── admin-help.php                  # Help section

Usage

Creating a Connection

  1. Navigate to Monday.com NFAdd Connection
  2. Enter a connection name (e.g., "Contact Form to Sales Board")
  3. Select which Ninja Form to connect
  4. Enter your Monday.com API token
  5. Enter your Monday.com Board ID
  6. (Optional) Enter your Monday.com Group ID
  7. Map form field keys to Monday.com column IDs using JSON format
  8. Check "Active" to enable the connection
  9. Save

Finding Your API Token

  1. Log into Monday.com
  2. Click your profile picture
  3. Go to AdminAPI
  4. Copy your API token

Finding Your Board ID

The Board ID is in your board's URL:

https://yourcompany.monday.com/boards/1234567890
                                        ^^^^^^^^^^
                                        Board ID

Finding Your Group ID (Optional)

  1. Open your Monday.com board
  2. Right-click on the group/section title you want to use
  3. Select "Copy group link"
  4. The Group ID is in the URL after group_id=

Example: ...?group_id=topics - the Group ID is "topics"

Note: If you don't specify a Group ID, items will be added to the default/first group on the board.

Field Mapping

Basic Field Mapping

Map form field keys to Monday.com column IDs:

{
  "first_name": "name",
  "email": "email",
  "phone": "phone",
  "message": "text"
}

Left side = Ninja Forms field keys Right side = Monday.com column IDs

Using Field Keys

Click "Show field keys for selected form" to see all available field keys for your form. This makes mapping much easier!


Advanced Features

Dynamic Date/Time Values

Insert current date and time automatically using special placeholders:

{
  "first_name": "name",
  "email": "email",
  "message": "text",
  "{{current_date}}": "submission_date",
  "{{current_datetime}}": "submitted_at"
}

Available placeholders:

Placeholder Output Use Case
{{current_date}} 2024-02-11 Monday.com date columns
{{current_time}} 14:30:45 Time tracking
{{current_datetime}} 2024-02-11 14:30:45 Full timestamp
{{current_timestamp}} 1707662445 Unix timestamp
{{current_year}} 2024 Year tracking
{{current_month}} 02 Month tracking
{{current_day}} 11 Day tracking

Example with date tracking:

{
  "company_name": "name",
  "contact_email": "email",
  "inquiry": "text",
  "{{current_date}}": "date_received",
  "{{current_year}}": "year"
}

Static Text Values

Set Monday.com columns to predefined text values that don't come from the form:

{
  "first_name": "name",
  "email": "email",
  "\"Website Form\"": "source",
  "static:New Lead": "status",
  "'High'": "priority"
}

Three ways to define static values:

  1. Double quotes: "Static Text"
  2. Single quotes: 'Static Text'
  3. Static prefix: static:Static Text

Common use cases:

  • Lead Source: "\"Website\"": "source" - Track where leads come from
  • Status: "static:New": "status" - Set initial status for all items
  • Priority: "'High'": "priority" - Assign priority levels
  • Department: "static:Sales": "department" - Route to specific teams
  • Type: "\"Contact Request\"": "type" - Categorize submissions

Example - Complete lead tracking:

{
  "name": "name",
  "email": "email",
  "company": "company_name",
  "message": "text",
  "\"Website Contact Form\"": "source",
  "static:New": "status",
  "'High'": "priority",
  "{{current_date}}": "received_date"
}

This will:

  • Map form fields to Monday columns
  • Set "source" to "Website Contact Form"
  • Set "status" to "New"
  • Set "priority" to "High"
  • Insert current date in "received_date"

Use Cases

Example 1: Different Forms to Different Boards

  • Contact Form → Sales Board
  • Job Application → HR Board
  • Support Request → Customer Support Board

Example 2: One Form to Multiple Boards

Create two connections:

  • Contact Form → Sales Board
  • Contact Form → Marketing Board

Both connections will fire when the contact form is submitted!

Example 3: Advanced Lead Tracking

{
  "full_name": "name",
  "email_address": "email",
  "phone_number": "phone",
  "company_name": "company",
  "message": "inquiry",
  "\"Website - Contact Page\"": "source",
  "static:New Lead": "status",
  "'To Review'": "stage",
  "{{current_date}}": "date_submitted",
  "{{current_datetime}}": "timestamp"
}

Example 4: Support Request with Priority

{
  "customer_name": "name",
  "customer_email": "email",
  "issue_description": "description",
  "static:Support Ticket": "type",
  "'High'": "priority",
  "\"Website Form\"": "source",
  "{{current_datetime}}": "received_at"
}

Development

Adding New Features

  1. New API methods: Edit includes/class-monday-nf-api.php
  2. New admin pages: Edit includes/class-monday-nf-admin.php and add view in views/
  3. New data fields: Edit includes/class-monday-nf-connection.php
  4. New field formatting: Edit includes/class-monday-nf-submission.php
  5. New placeholders: Add to get_special_value() in class-monday-nf-submission.php

Testing

  1. Enable debug logging in your connection settings
  2. Submit a test form
  3. Check /wp-content/debug.log for detailed information

You'll see entries like:

Monday NF Connector [Test] - Field Key: first_name, Value: John
Monday NF Connector [Test] - Special Value: {{current_date}} = 2024-02-11
Monday NF Connector [Test] - Static Value: "Website Form" = Website Form

Debug Log Location

Enable WordPress debugging by adding to wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Then check: /wp-content/debug.log


Troubleshooting

Form not sending to Monday.com?

  1. Check connection is Active
  2. Enable Debug Logging
  3. Submit test form
  4. Check debug log for errors
  5. Verify API token and Board ID are correct

"Invalid field mapping JSON" error?

Your JSON must be valid. Common issues:

  • Missing quotes around keys/values
  • Missing commas between entries
  • Extra comma after last entry
  • Unescaped quotes in static values (use \" inside quotes)

Valid:

{
  "name": "name",
  "\"Static Text\"": "column"
}

Invalid:

{
  "name": "name",
  ""Static Text"": "column"
}

Field values not appearing?

  1. Check field keys match exactly (case-sensitive)
  2. Use "Show field keys" button to verify
  3. Check Monday.com column IDs are correct
  4. Enable debug logging to see what's being sent

Placeholders not working?

  • Ensure placeholder is wrapped in {{ and }}
  • Check spelling (case-insensitive but must match exactly)
  • Enable debug logging to see if placeholder is recognized

Static values not appearing?

  • Ensure text is properly quoted or prefixed with static:
  • Check for escaped quotes inside values
  • Enable debug logging to verify static value extraction

Security

  • All data is sanitized before saving
  • Nonce verification on all actions
  • Capability checks (requires manage_options)
  • API tokens stored securely in WordPress options
  • No sensitive data logged unless debug mode is enabled