Olmec Dynamics
H
·6 min read

How to Create Monday.com Order Items from WooCommerce Using WooCommerce Webhooks and Make.com

Create Monday.com order items from WooCommerce using WooCommerce webhooks and Make.com. Step-by-step setup, mappings, idempotency, security checks and testing plan.

Introduction

If you handle orders in WooCommerce and track fulfilment or operations in Monday.com, manually copying order details into a board is slow and error prone. The manual flow looks like this: someone sees a new order email, opens Monday.com, creates an item, and pastes customer, items, totals and shipping. That wastes time and introduces transcription errors.

This guide shows how to build an event-driven automation that creates or updates a Monday.com Orders item for every WooCommerce order event, using WooCommerce webhooks and Make.com. By the end you will have a practical scenario, field mappings, idempotency checks and a test plan.

What You'll Need

  • WooCommerce store with admin access to create webhooks (WordPress + WooCommerce). No plugin required beyond WooCommerce core for webhooks.
  • A Make.com account with webhooks and HTTP/GraphQL modules (paid plan recommended if you expect high volume or want higher run limits).
  • A Monday.com account with permission to create and update items on the target board, and access to an API token with the required scopes for board mutations.
  • A Monday.com board named Orders with columns you will map (see example below).
  • Basic familiarity with GraphQL queries and HTTP signatures is helpful.

Note: Make.com free tiers often limit execution cycles. For production flows expect to run on a paid Make.com plan.

How It Works (The Logic)

WooCommerce sends order events via webhook (order.created, order.updated, order.paid). Make.com receives the webhook, normalises the payload, checks if the order_id already exists on the Monday.com Orders board, then either creates a new item or updates the existing item via Monday.com GraphQL. The scenario includes idempotency using order_id and retries for transient failures.

Step-by-Step Setup

  1. Prepare the Monday.com Orders board

    • Create a board called Orders with these columns: Order ID (text), Customer (text), Email (text), Total (numbers), Currency (text), Payment Method (dropdown), Order Status (status), Fulfilment Status (status), Ship To (text), Created At (date), Line Items (long text).
    • Note down column IDs if you plan to use direct column ID mapping in GraphQL. Column IDs can change when columns are recreated, so keep a mapping file outside Monday.com.
  2. Create WooCommerce webhooks

    • In WordPress admin: WooCommerce > Settings > Advanced > Webhooks. Create a webhook for the events you need: order.created (or order.created/created), order.updated, order.paid. Use delivery URL that Make.com will provide in the next step.
    • Set the webhook secret (shared secret) in WooCommerce. You will verify this in Make.com if you use a custom HTTP receiver. This prevents spoofed requests.
  3. Build the Make.com scenario, module by module

    • Module 1: Webhooks, "Custom webhook". Create a new webhook and copy the Make.com webhook URL. Paste this URL into the WooCommerce webhook endpoint. Save a sample order by placing a test order on your store.
    • Module 2: JSON parse / Text aggregator (if needed). Use a JSON parse or built-in Make data structure to normalise the WooCommerce payload to the fields you mapped earlier: order_id, customer_name, email, total, currency, payment_method, status, shipping_address, line_items (flatten the array into readable text).
    • Module 3: HTTP / GraphQL query to Monday.com to search for existing item by Order ID. Use the Monday.com GraphQL API to run a query that searches items on the Orders board by the Order ID column. Example GraphQL query body: {"query":"query { boards(ids:BOARD_ID) { items_by_column_values(column_id:"order_id_column_id", column_value:"{{order_id}}") { id } } }"}. Map the result to determine if an item exists.
    • Module 4: Router with two paths. Path A if item exists, Path B if not.
      • Path A (update): Use HTTP / GraphQL mutation to change status, totals, shipping or add notes. Example mutation uses change_multiple_column_values with a JSON columns mapping.
      • Path B (create): Use HTTP / GraphQL mutation to create an item on the Orders board and set the columns on creation, including Order ID so future events deduplicate.
    • Module 5: Logging and retries. After create/update, add a Make.com module that writes a compact audit row to Google Sheets or to Make.com Data Store for traceability. Add a small sleep and retry logic for the Monday.com call if you catch 429 or 5xx responses.
  4. Field mappings and column value format

    • Map simple fields directly: order_id -> Order ID; customer_name -> Customer; email -> Email; total -> Total; currency -> Currency.
    • For status columns map WooCommerce statuses to Monday.com status labels (e.g., processing -> Processing, completed -> Paid). If label mismatch occurs, create matching labels on Monday.com first.
    • For line items create a readable string listing each SKU x qty, or if you need structured line items consider modelling them as sub-items or a linked board. Sub-items require extra GraphQL calls.
  5. Idempotency and deduplication

    • Use WooCommerce order_id as your canonical dedupe key. The scenario must first query Monday.com by Order ID. If the query returns an item id, update that item. If not, create it.
    • Persist an event log in Google Sheets or Make.com Data Store keyed by webhook delivery id and order_id to avoid processing the same webhook multiple times if retries occur.
  6. Security and verification

    • Verify the WooCommerce webhook signature using the shared secret. If Make.com’s webhook cannot verify headers directly, add an intermediate HTTP module that checks the signature header, rejects mismatches and logs attempts.
    • Use a Monday.com token scoped to the minimum necessary permissions to create and update items on the Orders board.
  7. Testing and go-live checklist

    • Submit test orders for states: created, paid, updated, refunded. Confirm items are created and updated with correct mappings.
    • Test retry behaviour by simulating transient Monday.com API failures.
    • Monitor the first 50 live orders manually for mapping errors, then reduce manual checks after confidence grows.

Real-World Business Scenario

A boutique filled-goods ecommerce brand used this flow to replace a manual fulfilment board. Before automation pick lists were created by hand from order emails. After implementing the WooCommerce → Make.com → Monday.com flow they reduced day-start prep by an hour and eliminated shipping mistakes caused by human transcription. The fulfilment team now views a live Orders board with payment status and a clear line-item list for packing.

Common Variations

  • Add Slack notifications only for orders above a threshold total, by adding a filter after the create step and a Slack message module.
  • Model line items as sub-items on Monday.com if you need per-item fulfilment tracking, adding an extra GraphQL call per line item and linking to the parent item.
  • Send order financials to Xero or QuickBooks after the Monday.com item is created using a downstream Make.com router path.

Final notes on running this in production

You now have a repeatable pattern: WooCommerce webhooks into Make.com, payload normalisation, dedupe by order_id, create or update via Monday.com GraphQL, and a monitoring/logging layer. If you want us to implement this for your store or build the sub-item model and monitoring dashboards, Olmec Dynamics builds these integrations for operational teams. See how we build form to CRM flows in this guide about Typeform and HubSpot for a comparable implementation pattern.