Skip to main content

Mutual Action Plan

The Mutual Action Plan (MAP) API enables you to create structured collaboration between sellers and buyers within Shared Spaces. MAPs provide a centralized location to track deal progress through milestones and tasks from start to finish.

What you'll learn

  • How to create and manage Mutual Action Plans
  • How to structure deals with milestones and actions
  • How to assign tasks to participants
  • How to track completion status and due dates
TL;DR

When to use the API

CRM
Integration
Automated
Onboarding
Deal
Automation
Task
Management
Sync deal stages and tasks between Showpad and your CRM system.Create templated MAPs for new customer implementations.Trigger milestone creation based on sales stage changes.Assign actions to participants and track completion status.
Prerequisites
  • Plan: Ultimate | Advanced or Expert with Collaborate+
  • Permissions: Shared Space participant or Administrator account
  • Authentication: Valid OAuth 2.0 access token (learn more)
  • Config: Shared Spaces enabled

Base Endpoint

Every request needs to be prefixed with the base endpoint:

https://{{subdomain}}.api.showpad.com/v4

MAPs use Showpad API v4. Therefore, your calls will use the base endpoint + the API version + the purpose of the call:

https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/...

MAP Domain Language

To start working with Mutual Action Plans via API, it's important to understand the required terminology in order to work effectively.

Description
mutual-action-planA structured plan of actions and milestones linked to defined Showpad Shared Space. Synonyms: Next Steps

Note: Must be added to a specific context: contextType=SHARED-SPACE
contextTypeIdentifies SHARED-SPACE as the entity to which a MAP is added.
milestoneA grouping of actions within a MAP. It defines a single goal which includes individual tasks to complete.
actionA single task to execute. It can have:
  • zero or more assignees
  • an optional due date
An action has two states:
  • COMPLETED
  • NOT_COMPLETED
participantIdA defined Showpad Identity with access to the Shared Space the MAP is linked to.

A participant has two states:
  • ACTIVE
  • INACTIVE
assigneeA participant of a Mutual Action Plan charged with completing a specific action. Only ACTIVE participants can be assigned to an action.

Note: If an assignee is not a participant of the MAP, the assignment is omitted.
dueAtA date defining the deadline for a action to be completed.

Due dates have three color-coded statuses:
  • DEFAULT - default state
  • ALMOST DUE - 7 days or less until deadline
  • OVERDUE - deadline is in the past
sourceMapIdThe identifier of a MAP to use as a template.

MAP

The following sections describe how to make requests concerning a MAP.

Create MAP

note

This action can only be performed by internal users (sellers).

Before you can create a Mutual Action Plan, you must know the ID of the context to which you want to add it. For Shared Spaces, you can obtain this id by executing a GET request for a List of Shared Spaces.

Once you have the context, you can create a MAP with the following request:

MethodEndpointDescription
POST/mutual-action-planCreates a MAP in the identified context.

In the payload, add the MAP to a context with contextType and contextId. For Shared Spaces, you would define:

  • contextType : SHARED-SPACE
  • contextId: {Shared Space Id}

Example Request

curl -X POST "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"contextType":"SHARED-SPACE", "contextId": "f10ea2108f07cafb3edd62a46346f234"}'

Example Response

{
"id": "01HBR3C8AB2PMYMEMJREVF4DBY",
"context": {
"type": "SHARED-SPACE",
"id": "f10ea2108f07cafb3edd62a46346f234"
},
"createdAt": "2023-10-02T11:46:33.931Z",
"updatedAt": "2023-10-02T11:46:33.931Z"
}
caution

Only one MAP can be added to a context. If a MAP already exists for the specified context, an error is returned.

Duplicate MAP

You can use a MAP as a template to create another MAP by following the Create MAP process and including a sourceMapId in the request payload:

  • sourceMapId: {MAP ID}

This is the identifier of another MAP that you want to use as a template. The entire structure of the source MAP (milestones and actions, including their positions) will be copied to the new MAP.

Example Request

curl -X POST "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"contextType":"SHARED-SPACE", "contextId": "f10ea2108f07cafb3edd62a46346f234", "sourceMapId":"01HBR3C8AB2PMYMEMJREVF4DAY"}'

Example Response

{
"id": "01HBR3C8AB2PMYMEMJREVF4DBY",
"context": {
"type": "SHARED-SPACE",
"id": "f10ea2108f07cafb3edd62a46346f234"
},
"createdAt": "2023-10-02T11:46:33.931Z",
"updatedAt": "2023-10-02T11:46:33.931Z"
}
caution

You must have access to the MAP specified in sourceMapId.

Delete MAP

note

This action can only be performed by internal Showpad users.

You can delete a MAP with the following request:

MethodEndpointDescription
DELETE/mutual-action-plan/{mapId}Permanently removes the specified MAP in its entirity (including milestones, actions, assignees, etc.)

Example Request

curl -X DELETE "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/01HBR3C8AB2PMYMEMJREVF4DBY" \
-H "Authorization: Bearer {access_token}"

Example Response

HTTP Status 204 No Content

View MAP

You can retrieve the details of a MAP with the following request:

MethodEndpointDescription
GET/mutual-action-plan/{mapId}Returns the details of a MAP.

The view query parameter has two values:
  • BASIC - (default value). Provides minimal information of a MAP
  • FULL - Provides the complete MAP tree

Basic View

curl "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/01HBR3C8AB2PMYMEMJREVF4DBY?view=BASIC" \
-H "Authorization: Bearer {access_token}"

Response

{
"view": "BASIC",
"id": "01HBR3C8AB2PMYMEMJREVF4DBY",
"context": {
"id": "f10ea2108f07cafb3edd62a46346f234",
"type": "SHARED-SPACE",
"title": "my super MAP"
},
"createdAt": "2023-10-02T11:46:33.931Z",
"updatedAt": "2023-10-02T11:46:33.931Z"
}

Full View

curl "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/01HBR3C8AB2PMYMEMJREVF4DBY?view=FULL" \
-H "Authorization: Bearer {access_token}"

Response

{
"view": "FULL",
"id": "01HBR3C8AB2PMYMEMJREVF4DBY",
"context": {
"id": "f10ea2108f07cafb3edd62a46346f234",
"type": "SHARED-SPACE",
"title": "my super MAP"
},
"createdAt": "2023-10-02T11:46:33.931Z",
"updatedAt": "2023-10-02T11:46:33.931Z",
"milestones": [
{
"id": "01HBR3JF73V2YNX2CP75B1103G",
"title": "Nice!",
"createdAt": "2023-10-02T11:49:57.603Z",
"updatedAt": "2023-10-02T11:49:57.603Z",
"actions": [
{
"id": "01HBR4QK8A42E4W1WYKEKMYABR",
"title": "First one",
"dueAt": null,
"status": "NOT_COMPLETED",
"assignees": [
{
"id": "01HBR5EE675E7PSG8WMKECKRR5",
"participantId": "eddd773d2cbdc57a70f73aa7b40c1e72"
}
]
}
]
}
]
}

List of MAPs

You can retrieve a list of all your Mutual Action Plans with the following request:

MethodEndpointDescription
GET/mutual-action-planReturns a list of all MAPs for your organization.

The contextType query parameter is required.
note

All internal users can request a list of MAPs, but only the MAPs to which they have access are returned (i.e., the user must be a participant in the context the MAP is attached to).

Example Request

curl "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan?contextType=SHARED-SPACE" \
-H "Authorization: Bearer {access_token}"

Example Response

{
"items": [
{
"id": "01HBR3C8AB2PMYMEMJREVF4DAY",
"context": {
"id": "f10ea2108f07cafb3edd62a46346f234",
"type": "SHARED-SPACE",
"title": "my first map"
},
"createdAt": "2023-10-02T11:46:33.931Z",
"updatedAt": "2023-10-02T11:46:33.931Z"
},
{
"id": "01HBR3C8AB2PMYMEMJREVF4DBY",
"context": {
"id": "f10ea2108f07cafb3edd62a46346f567",
"type": "SHARED-SPACE",
"title": "my second map"
},
"createdAt": "2023-11-02T10:15:45.823Z",
"updatedAt": "2023-11-02T10:15:45.823Z"
}
]
}

Milestones

The following sections describe how to make requests concerning the Milestones within a MAP.

Add Milestone

In order to add milestones to your MAP, you'll need its ID. You can get this ID from the Create MAP request response or you can use the List of MAPs request and filter by contextType (Shared Space) and contextId (Shared Space ID).

Once you have the MAP ID, you can add Milestones with the following request:

MethodEndpointDescription
POST/mutual-action-plan/{mapId}/milestonesAdds a milestone to the MAP with the given ID.

Example Request

curl -X POST "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/01HBR3C8AB2PMYMEMJREVF4DBY/milestones" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"title":"Nice!"}'

Example Response

{
"id": "01HBR3JF73V2YNX2CP75B1103G",
"title": "Nice!",
"createdAt": "2023-10-02T11:49:57.603Z",
"updatedAt": "2023-10-02T11:49:57.603Z"
}

Update Milestone

You can update the title and/or position of a Milestone with the following request:

MethodEndpointDescription
PATCH/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}Updates a Milestone in the specified MAP.

Example Request

curl -X PATCH "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/01HBR3C8AB2PMYMEMJREVF4DBY/milestones/01HBR3JF73V2YNX2CP75B1103G" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"title":"New title"}'

Example Response

{
"id": "01HBR3JF73V2YNX2CP75B1103G",
"title": "New title",
"createdAt": "2023-10-02T11:49:57.603Z",
"updatedAt": "2023-10-02T11:49:57.603Z"
}

Reorder Milestones

You can change the order of Milestones by using their ordinal numbers to define their position in the payload. Note that counting begins at 0 (zero).

  • milestone A (position 0)
  • milestone B (position 1)
MethodEndpointDescription
PATCH/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}Defines the order of the Milestones within a MAP.

Example Request

curl -X PATCH "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"position": 0}'

Example Response

{
"id": "01HBR3JF73V2YNX2CP75B1103G",
"title": "New title",
"createdAt": "2023-10-02T11:49:57.603Z",
"updatedAt": "2023-10-02T11:49:57.603Z"
}

Delete Milestone

You can delete a Milestone with the following request:

MethodEndpointDescription
DELETE/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}Permanently removes the specified Milestone in its entirety (including actions and assignees).

Example Request

curl -X DELETE "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}" \
-H "Authorization: Bearer {access_token}"

Example Response

HTTP Status 204 No Content

Actions

The following sections describe how to make requests concerning the Actions within the Milestones of a MAP.

info

Actions performed as part of automation/integration will appear as "Integration App" in the MAP's activity timeline in Showpad.

Add Action

To add an action to a Milestone, you must specify the IDs for both the MAP and the Milestone:

MethodEndpointDescription
POST/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}/actionsAdds an action to the specified Milestone in the designated MAP.

Example Request

curl -X POST "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"title":"Nice action!"}'

Example Response

{
"id": "01HBR3SZ3ZJXCJBKEJBJZEVFQY",
"title": "Nice action!",
"dueAt": null,
"createdAt": "2023-10-02T11:54:03.263Z",
"updatedAt": "2023-10-02T11:54:03.263Z",
"status": "NOT_COMPLETED"
}

Update Action

You can update the following fields of an Action:

  • title
  • due date
  • status
  • Milestone identifier
  • position (see Reorder Actions)
MethodEndpointDescription
PATCH/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}/actions/{actionId}Updates an action in a specified Milestone within the designated MAP.

Example Request

curl -X PATCH "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions/{actionId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"status": "COMPLETED", "title": "new title", "dueAt": "2023-10-10T22:00:00.000Z"}'

Example Response

{
"id": "01HBR3SZ3ZJXCJBKEJBJZEVFQY",
"title": "new title",
"dueAt": "2023-10-10T22:00:00.000Z",
"createdAt": "2023-10-02T11:54:03.263Z",
"updatedAt": "2023-10-02T11:54:03.263Z",
"status": "COMPLETED"
}

Reorder Actions

You can change the order of Actions within Milestones by using their ordinal numbers to define their position in the payload. Note that counting begins at 0 (zero).

  • Milestone A
    • Action AA (position 0)
    • Action AB (position 1)
  • Milestone B
    • Action BA (position 0)
    • Action BB (position 1)

Example Request

curl -X PATCH "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions/{actionId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"position": 0}'

Example Response

{
"id": "01HBR3SZ3ZJXCJBKEJBJZEVFQY",
"title": "Nice action!",
"dueAt": null,
"createdAt": "2023-10-02T11:54:03.263Z",
"updatedAt": "2023-10-02T11:54:03.263Z",
"status": "NOT_COMPLETED"
}

Delete Action

You can delete an action with the following request:

MethodEndpointDescription
DELETE/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}/actions/{Action ID}Permanently removes the specified action.

Example Request

curl -X DELETE "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions/{actionId}" \
-H "Authorization: Bearer {access_token}"

Example Response

HTTP Status 204 No Content

Participants

The following sections describe how to make requests concerning the Participants that can be assigned Actions within the Milestones of a MAP.

Assign Action

You can assign actions to multiple participants. In order to do so, you must have the ID of the participants. You can use the List of Participants request to retrieve all of the participants in a given MAP.

Once you have the participantId, you can assign an action with the following request:

MethodEndpointDescription
POST/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}/actions/{Action ID}/assigneesAssigns a specific action to a designated participant. The response provides an Assignee ID of the assignment to the participant.

Example Request

curl -X POST "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions/{actionId}/assignees" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"participantId":"eddd773d2cbdc57a70f73aa7b40c1e72"}'

Example Response

{
"id": "01HBR4CBZBEYY1FPEGTNJBH6J1",
"participantId": "eddd773d2cbdc57a70f73aa7b40c1e72",
"createdAt": "2023-10-02T12:04:06.251Z",
"updatedAt": "2023-10-02T12:04:06.251Z"
}

Unassign Action

You can unassign an action from an Assignee with the following request:

MethodEndpointDescription
DELETE/mutual-action-plan/{MAP ID}/milestones/{Milestone ID}/actions/{Action ID}/assignees/{Assignee ID}Permanently removes a specific assigned action from a designated participant.

Example Request

curl -X DELETE "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/milestones/{milestoneId}/actions/{actionId}/assignees/{assigneeId}" \
-H "Authorization: Bearer {access_token}"

List of Participants

You can retrieve a list of all of the participants in a MAP:

MethodEndpointDescription
GET/mutual-action-plan/{MAP Id}/participantsReturns all participants in a MAP.

Example Request

curl "https://{{subdomain}}.api.showpad.com/v4/mutual-action-plan/{mapId}/participants" \
-H "Authorization: Bearer {access_token}"

Example Response

{
"items": [
{
"id": "eddd773d2cbdc57a70f73aa7b40c1972",
"status": "ACTIVE",
"userId": "b5f5e881324f61479002be5cda41abba",
"email": "Kris.P.Bacon@yummy.com",
"firstName": "Kris",
"lastName": "Bacon",
"avatar": "https://doc.staging.showpad.biz/api/v3/assets/.../preview/v1.0"
}
]
}

Next steps

Now that you understand how to work with Mutual Action Plans, explore these related topics:

Was this page helpful?