Larson ElectronicsVendorHub

MS Forms + Power Automate Integration

Setup Guide

Each MS Form (Drawings, Nameplates, Test Reports) has its own PA flow that POSTs to this webhook when submitted.

How it Works
1

Submitter fills MS Form

Drawing / Nameplate / Test Report

2

PA creates record here

POST → paWebhook

3

Reviewer approves in PA

Approve / Reject / Revision

4

PA updates status here

PATCH → paWebhook

5

Visible in dashboard

Full history tracked

PA Trigger: "When a new response is submitted"

Create one PA flow per form (Drawings, Nameplates, Test Reports). Each flow uses:

  1. Trigger: When a new response is submitted
  2. Action: Get response details
  3. Action: HTTP POST to this webhook with the body below
  4. Action: Set variable — save body('HTTP_Create')?['request_id']
  5. Action: Start and wait for an approval
  6. Action: HTTP PATCH — send approval outcome back (see tab 2)
HTTP POST — Create Record

Webhook URL:

https://api.base44.com/api/apps/{YOUR_APP_ID}/functions/paWebhook

Method: POST

Header: x-webhook-secret: <your WEBHOOK_SECRET value>

Header: Content-Type: application/json

Body — choose the payload for your form type:

{
  "approval_type": "drawing",
  "submitter_name": "@{outputs('Get_response_details')?['body/responder/displayName']}",
  "ots_number": "@{outputs('Get_response_details')?['body/r<OTS Number>']}",
  "order_numbers": "@{outputs('Get_response_details')?['body/r<Order Number(s)>']}",
  "sales_order_sku": "@{outputs('Get_response_details')?['body/r<Sales Order SKU>']}",
  "product_id": "@{outputs('Get_response_details')?['body/r<Product ID>']}",
  "purchase_order_line_amount": "@{outputs('Get_response_details')?['body/r<Purchase Order Line Amount as it pertains to the sales SKU>']}",
  "pi": "@{outputs('Get_response_details')?['body/r<PI:>']}",
  "vendor_name": "@{outputs('Get_response_details')?['body/r<Vendor>']}",
  "vendor_email": "@{outputs('Get_response_details')?['body/r<Vendor\'s Email>']}",
  "sales_order_line_amount": "@{outputs('Get_response_details')?['body/r<Sales Order Line amount for SKU Amount>']}",
  "customer_name": "@{outputs('Get_response_details')?['body/r<Customer Name>']}",
  "kva_range": "@{outputs('Get_response_details')?['body/r<What KVA is the sales SKU that you are processing on this request?>']}",
  "approval_type_code": "@{outputs('Get_response_details')?['body/r<What was the approval code from the lead purchaser?>']}",
  "sharepoint_url": "@{outputs('Get_response_details')?['body/r<Upload Drawing for the Sales SKU you are processing on this request.>']}",
  "submission_status": "@{outputs('Get_response_details')?['body/r<What is the status of this drawing\'s approval process?>']}",
  "document_version": "@{outputs('Get_response_details')?['body/r<Please indicate what version this is for the Drawings.>']}",
  "revision_instructions": "@{outputs('Get_response_details')?['body/r<If you chose \"Drawing, need revision\" please describe the instructions...>']}",
  "notes": "@{outputs('Get_response_details')?['body/r<Notes (Optional)>']}",
  "pa_flow_id": "@{workflow()?['run']?['name']}"
}

Save the request_id from the response — you need it for the PATCH status update. Use a "Set variable" action: body('HTTP_Create')?['request_id']