Appearance
CRM Deep Links
A button or link in your CRM can open Pitcher where the rep needs it: the create dialog for the account they are looking at, or a canvas they already have. The same link works in the browser and in the Pitcher iPad app.
Link format
https://<your Pitcher host>/?event[name]=<action>&event[instance_id]=<instance id>&event[<parameter>]=<value><your Pitcher host>is the address your reps use to sign in, for exampleyourcompany.my.pitcher.com.- URL-encode every value: account names often contain spaces,
&or accents. The square brackets may be sent as they are or encoded as%5Band%5D. event[instance_id]is the Pitcher instance to open. Reps with access to several instances land in this one. You can find it in Admin URLs:/admin/instance/<instance id>/….- For single sign-on, add
&connection=<connection name>(your Pitcher contact gives you the name). The rep then signs in with SSO directly.
A rep who is not signed in signs in first and then lands on the target.
Create a canvas for an account
Opens the Create dialog with the template and the account filled in. The rep reviews the dialog and confirms; nothing is created until they do.
https://yourcompany.my.pitcher.com/?event[name]=open_create_canvas&event[instance_id]=<instance id>&event[template_id]=<template id>&event[account_id]=<CRM account id>&event[account_name]=<account name>| Parameter | Required | Value |
|---|---|---|
event[name] | yes | open_create_canvas |
event[instance_id] | recommended | The Pitcher instance id |
event[template_id] | no | The template to select |
event[account_id] | no | The account's id in your CRM |
event[account_name] | no | The account's name, as reps should see it |
The account id is your CRM's own id. Pitcher stores each account under the id its CRM uses, so no mapping is needed.
- Instances connected to Salesforce: Pitcher looks the account up in Salesforce with the rep's access and shows the name from Salesforce.
event[account_name]is not used. - All other instances: the new canvas gets the account from
event[account_id]andevent[account_name]. Withoutevent[account_name], Pitcher uses the account name on the latest canvas for that account that the rep can see; when there is none, the dialog opens without an account.
Open a canvas
Opens an existing canvas.
https://yourcompany.my.pitcher.com/?event[name]=open_canvas&event[instance_id]=<instance id>&event[canvas_id]=<canvas id>&event[edit_mode]=false| Parameter | Required | Value |
|---|---|---|
event[name] | yes | open_canvas |
event[instance_id] | recommended | The Pitcher instance id |
event[canvas_id] | yes | The canvas id, shown in the address bar when the canvas is open in Pitcher |
event[edit_mode] | recommended | false opens the canvas in present mode, true in edit mode. Without it, the instance settings decide. |
When something does not match
| Case | What the rep sees |
|---|---|
| The template does not exist or the rep cannot use it | A message, and the dialog opens without that template |
| The account is not found in Salesforce | A message, and the dialog opens without an account |
| No account name is known (instances without Salesforce) | A message, and the dialog opens without an account |
| The canvas does not exist or the rep cannot open it | An access error |
The rep has no access to event[instance_id] | In the browser, the link opens in the rep's current instance |
Building the link in your CRM
Build the query with your platform's URL encoder rather than by joining strings. In JavaScript:
js
const params = new URLSearchParams({
'event[name]': 'open_create_canvas',
'event[instance_id]': '<instance id>',
'event[template_id]': '<template id>',
'event[account_id]': account.id,
'event[account_name]': account.name,
})
const url = `https://yourcompany.my.pitcher.com/?${params}`