Sync Mutual Action Plans to Project Management Tools
Keep your sales and customer success teams aligned by automatically syncing Mutual Action Plan (MAP) activities from Showpad to your project management tools. When actions are added, assigned, or completed in a MAP, your external systems stay up to date without manual data entry.
Classic Situation
Your sales team uses Showpad's Mutual Action Plans to collaborate with prospects or customers on deal and solution milestones. Meanwhile, your internal teams track all project tasks in a separate project management tool (such as Asana, Monday.com, Trello, or Jira).
Without integration, team members must manually update external tools, leading to:
- Duplicated effort and wasted time
- Actions falling out of sync between systems
- Missed deadlines due to delayed updates
- Lack of visibility into deal progress for internal stakeholders
Solution Example
Subscribe to Showpad MAP webhooks to automatically create and update tasks in your project management tool based on seller-buyer collaboration in the Shared Spaces Mutual Action Plan.
- Plan: Ultimate with Enterprise add-on | Advanced or Expert
- Permissions: Administrator access to Showpad's Admin App
- Config:
- A webhook endpoint capable of receiving HTTP POST requests
- Access to your project management tool's API
- Familiarity with Showpad Webhooks
Webhook Events
Showpad provides four MAP-related webhook events:
| Event | Description |
|---|---|
mutual-action-plan-app-added | A MAP is added to a Shared Space |
mutual-action-plan-action-added | An action is added to a MAP |
mutual-action-plan-action-status-changed | An action's status changes (completed/not completed) |
mutual-action-plan-action-assigned | An action is assigned to a participant |
Steps
1. Set Up Your Webhook Subscription
Create a webhook subscription in Showpad's Admin App to receive MAP events. See the Subscriptions guide for detailed instructions.
Subscribe to the events you need:
mutual-action-plan-action-added— to create new tasksmutual-action-plan-action-status-changed— to update task statusmutual-action-plan-action-assigned— to assign tasks to team members
2. Create a Webhook Endpoint
Your endpoint should accept HTTP POST requests and return a 2xx response to acknowledge receipt. Here's a basic
example:
// Example: Express.js webhook handler
app.post('/webhooks/showpad', (req, res) => {
const event = req.body;
console.log('Received event:', event.type);
console.log('Event data:', JSON.stringify(event.data, null, 2));
// Acknowledge receipt immediately
res.status(200).send('OK');
// Process the event asynchronously
processWebhookEvent(event);
});
3. Handle the Webhook Payload
Each webhook event follows the CloudEvents specification. Here's an example payload for an action being added:
{
"type": "mutual-action-plan-action-added",
"specversion": "1",
"id": "c40b30f2-fabf-4c89-aed0-f5f5aaac9a24",
"time": "2022-05-30T06:45:00.250Z",
"data": {
"initiator": {
"type": "PARTICIPANT",
"id": "e3dff281ad48421fb32de1cbab3a627f",
"email": "participant@example.com",
"firstName": "Adam",
"lastName": "Smith"
},
"addedAt": "2022-05-30T06:45:00.250Z",
"map": {
"id": "01HAM75SW9GA710HCBWE38B2HV",
"url": "https://domain.showpad.biz/webapp2/shares/shared-spaces/.../map",
"context": {
"id": "e3dff281ad48421fb32de1cbab3a627f",
"type": "SHARED-SPACE",
"title": "Acme Corp Deal Room",
"publicUrl": "https://domain.showpad.biz/s/wvlFqFze"
}
},
"action": {
"id": "01H8Y351W9XK7MTJBKYZ32PXK7",
"milestoneId": "9XK7MTJB01H8Y351WKYZ32PXK7",
"title": "Schedule kickoff meeting",
"status": "NOT_COMPLETED",
"dueAt": "2022-06-15T00:00:00.000Z"
}
}
}
4. Map to Your Project Management Tool
Process each event type and call your project management tool's API:
async function processWebhookEvent(event) {
const { type, data } = event;
switch (type) {
case 'mutual-action-plan-action-added':
await createTask({
externalId: data.action.id,
title: data.action.title,
dueDate: data.action.dueAt,
project: data.map.context.title,
description: `From Showpad MAP: ${data.map.url}`,
});
break;
case 'mutual-action-plan-action-status-changed':
await updateTaskStatus({
externalId: data.action.id,
completed: data.action.status === 'COMPLETED',
});
break;
case 'mutual-action-plan-action-assigned':
await assignTask({
externalId: data.action.id,
assigneeEmail: data.assignee.email,
});
break;
}
}
Store the Showpad action.id as an external ID in your project management tool. This allows you to match incoming
status updates to the correct task.
5. Handle Status Changes
The mutual-action-plan-action-status-changed event includes both the current and previous status:
{
"action": {
"id": "01H8Y351W9XK7MTJBKYZ32PXK7",
"title": "Schedule kickoff meeting",
"status": "COMPLETED",
"previousStatus": "NOT_COMPLETED",
"dueAt": "2022-06-15T00:00:00.000Z"
}
}
Use this to toggle task completion in your project management tool.
For webhook verification and security best practices, see the Verification guide.
Was this page helpful?