Procurement teams running on Coupa live at the intersection of supplier intake, contract management, and payment. Every new supplier relationship triggers a stack of agreements - MSA, NDA, confidentiality, banking form, W9, data processing addendum. This guide describes the architecture for firing those agreements automatically when a Coupa event fires, using Baton as the webhook relay and Docusign Workflow Builder as the orchestration engine.
What you'll need #
- A Coupa account with the modules you use (Core, SIM, CLM) configured to emit outbound event notifications.
- A Docusign account with IAM and Workflow Builder enabled, plus a Coupa Extension App in your Docusign tenant if you want Docusign to write data back to Coupa.
- A Baton account.
How Coupa pushes events #
Coupa's outbound event surface depends on which modules you have licensed. The common pattern for automation is to configure Coupa to HTTP POST a JSON payload to an external URL when a specific event fires - supplier created, contract executed, PO approved, etc.
Events useful for agreement automation:
supplier.createdorsupplier.approved- supplier MSA + NDA + W9contract.renewal_due- renewal workflowpurchase_order.approvedover a threshold - counter-signature workflow
Step 1 - Add the automation in Baton #
In Baton's Flow Builder, click + Add Automation. Select Coupa as the source (once it's in the catalog). Pick the target Docusign Workflow Builder workflow from the dropdown - populated from your connected Docusign account by the Workflow Checker, which also shows the parameter contract each workflow expects.
Baton generates a unique webhook URL:
https://app.iambaton.com/hook/d7f1a9c3e2b5
Enter the webhook verification credential in the appropriate field (HMAC secret or Basic Auth credentials, depending on what Coupa can send). This is the only credential Baton needs - no Coupa API key, no OAuth token, no scoped access.
Step 2 - Configure Coupa to POST to Baton #
In Coupa, configure the outbound event for the object + event type you care about (for supplier onboarding: supplier.approved). Set the endpoint to the Baton URL. Set the verification header or HMAC signature to match what you entered in Baton.
The exact Coupa UI path depends on your module and Coupa version - check Coupa's integration documentation for the current location.
Step 3 - How Baton matches fields #
There is no drag-and-drop field mapping step in Baton. The mapping is driven by your Docusign Workflow Builder workflow.
When you build the Workflow Builder workflow that should fire on supplier.approved, its start trigger declares named parameters - supplierName, supplierCountry, contactEmail, and so on. Baton's Workflow Checker syncs that contract.
At runtime, Baton scans the Coupa webhook payload and matches by parameter name. If Coupa's payload contains a supplier.name field and your Docusign workflow declares supplierName, you either name the parameter name in your workflow or restructure the Coupa payload to include a supplierName field - the mapping is always resolved on the Docusign side.
Step 4 - Conditional routing via multiple automations #
A common need: send different agreement packs to different suppliers. US suppliers need a W9. EU suppliers need a Data Processing Addendum. Strategic suppliers need a full MSA.
In Baton, each of those is a separate automation with its own webhook URL and its own target Docusign workflow. On the Coupa side, you configure the supplier approval event to route to the correct Baton URL based on supplier metadata - in Coupa's native event routing, or via a middleware step if Coupa can't do the routing natively.
Inside a single automation, Baton doesn't support conditional "if supplier country = US then workflow A else workflow B" logic. Conditional branching belongs inside the Docusign workflow itself, where Maestro can route the agreement based on any field.
Step 5 - Monitor and debug #
Every webhook becomes an Action in Baton's Action log, with the 2-phase lifecycle visible:
- Webhook verification → Verified
- Maestro Trigger → Launched with the Maestro Instance ID
Click View Instances on the Docusign workflow card in the Flow Builder to see every run triggered by Baton, with status (Running, Completed, Failed, Cancelled), progress bar, current step, and a direct-open link to the instance in Docusign.
Failures surface in the Notifications Inbox and route to Slack.
Why this architecture #
Procurement teams often try to build this pipeline by wiring Coupa → Workato → Docusign directly. The issue is that Workato doesn't give you a dedicated view of every Docusign workflow run in one place, and it doesn't surface which supplier has a stalled agreement. Baton's Flow Builder does that by default - every Coupa-sourced automation is one card, with live counts, an Action log, and a direct link to the current Docusign instance.
If Coupa support matters for your team, reach out - we prioritize integrations based on procurement team demand.