Pipory
Node reference

Zendesk Sell

Zendesk Sell node reference - all 108 operations, the credential it needs, and a worked example.

Zendesk Sell / Base CRM (CRM). 108 operations: contacts, leads and deals (CRUD, upsert, list); lead conversion; deal contacts; notes, tasks and calls; text messages; collaborations; products, orders and line items; Reach sequences and enrollments; pipelines and stages; tags, lead and deal sources, loss and unqualified reasons; custom field definitions, documents and visits; users and account; and the v3 Search API.

Credential: Zendesk Sell access token - see Credentials.

Scopes

Each operation below lists the scope it needs. Scopes are requested by an OAuth app on Sell's /oauth2/authorize, where scope is a mandatory space-delimited list. Zendesk Sell — the CRM formerly called Base, on api.getbase.com, NOT Zendesk Support — defines exactly THREE scopes for its whole API and no per-resource granularity: read (read-only access to all your data EXCEPT account and user info), write (write access to all your data, same exception) and profile (read-only access to the account and user info only). The split that catches people out is that third one: a token granted read write is still refused on List users, Get the authenticating user and Get account details, because read explicitly excludes them — those four operations are the only ones below that name profile, and that is the whole reason the scope is worth stating. Pipory's credential can equally hold a Personal Access Token (Sell UI -> Settings -> Integrations -> OAuth -> Access Tokens), which carries NO scope choice at all and simply inherits its owner's full user permissions; for a PAT the table below is descriptive rather than prescriptive, and a 403 means the owning user cannot do this in Sell's own UI either — which is exactly what the Products and Custom Fields rows are warning about, since those writes are admin-only whatever the token. Two further gates are not scopes and answer 404 rather than 403: Orders and line items need an Enterprise plan, and the v3 Search API needs a plan that includes it. If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.

Operations (108)

Contacts

OperationWhat it doesScope
createContactCreate contactwrite
getContactGet contactread
updateContactUpdate contactwrite
listContactsList contactsread
upsertContactUpsert contact (create or update by filter)write
deleteContactDelete contactwrite

Leads

OperationWhat it doesScope
createLeadCreate leadwrite
getLeadGet leadread
updateLeadUpdate leadwrite
listLeadsList leadsread
upsertLeadUpsert lead (create or update by filter)write
deleteLeadDelete leadwrite

Lead conversions

OperationWhat it doesScope
convertLeadConvert lead to contact and dealwrite
listLeadConversionsList lead conversionsread

Deals

OperationWhat it doesScope
createDealCreate dealwrite
getDealGet dealread
updateDealUpdate deal (advance stage, change value)write
listDealsList dealsread
upsertDealUpsert deal (create or update by filter)write
deleteDealDelete dealwrite

Deal contacts

OperationWhat it doesScope
listAssociatedContactsList contacts on a dealread
addAssociatedContactAdd contact to a dealwrite
removeAssociatedContactRemove contact from a dealwrite

Notes

OperationWhat it doesScope
createNoteCreate notewrite
getNoteGet noteread
updateNoteUpdate notewrite
listNotesList notesread
deleteNoteDelete notewrite

Tasks

OperationWhat it doesScope
createTaskCreate taskwrite
getTaskGet taskread
updateTaskUpdate / complete taskwrite
listTasksList tasksread
deleteTaskDelete taskwrite

Calls

OperationWhat it doesScope
logCallLog a callwrite
getCallGet callread
updateCallUpdate callwrite
listCallsList callsread
deleteCallDelete callwrite
listCallOutcomesList call outcomesread

Text messages

OperationWhat it doesScope
listTextMessagesList text messagesread
getTextMessageGet text messageread

Collaborations

OperationWhat it doesScope
createCollaborationShare a record with a userwrite
getCollaborationGet collaborationread
listCollaborationsList collaborationsread
deleteCollaborationDelete collaborationwrite

Products

OperationWhat it doesScope
listProductsList productsread
getProductGet productread
createProductCreate productwrite (Sell admin role also required)
updateProductUpdate productwrite (Sell admin role also required)
deleteProductDelete productwrite (Sell admin role also required)

Orders

OperationWhat it doesScope
listOrdersList ordersread
getOrderGet orderread
createOrderCreate order for a dealwrite
updateOrderUpdate order discountwrite
deleteOrderDelete orderwrite

Order line items

OperationWhat it doesScope
listLineItemsList line itemsread
getLineItemGet line itemread
createLineItemAdd line item to orderwrite
updateLineItemUpdate line itemwrite
deleteLineItemRemove line itemwrite

Sequences (Reach)

OperationWhat it doesScope
listSequencesList sequencesread
enrollInSequenceEnroll a lead or contact in a sequencewrite
getSequenceEnrollmentGet sequence enrollmentread
updateSequenceEnrollmentUpdate enrollment statewrite
listSequenceEnrollmentsList sequence enrollmentsread
finishSequenceEnrollmentsFinish ongoing enrollments for a recordwrite

Pipeline lookups

OperationWhat it doesScope
listPipelinesList pipelinesread
listStagesList stagesread

Tags

OperationWhat it doesScope
listTagsList tagsread
getTagGet tagread
createTagCreate tagwrite
updateTagRename tagwrite
deleteTagDelete tagwrite

Lead sources

OperationWhat it doesScope
listLeadSourcesList lead sourcesread
getLeadSourceGet lead sourceread
createLeadSourceCreate lead sourcewrite
updateLeadSourceUpdate lead sourcewrite
deleteLeadSourceDelete lead sourcewrite

Deal sources

OperationWhat it doesScope
listDealSourcesList deal sourcesread
getDealSourceGet deal sourceread
createDealSourceCreate deal sourcewrite
updateDealSourceUpdate deal sourcewrite
deleteDealSourceDelete deal sourcewrite

Loss reasons

OperationWhat it doesScope
listLossReasonsList loss reasonsread
getLossReasonGet loss reasonread
createLossReasonCreate loss reasonwrite
updateLossReasonUpdate loss reasonwrite
deleteLossReasonDelete loss reasonwrite

Unqualified reasons

OperationWhat it doesScope
listDealUnqualifiedReasonsList deal unqualified reasonsread
getDealUnqualifiedReasonGet deal unqualified reasonread
createDealUnqualifiedReasonCreate deal unqualified reasonwrite
updateDealUnqualifiedReasonUpdate deal unqualified reasonwrite
deleteDealUnqualifiedReasonDelete deal unqualified reasonwrite
listLeadUnqualifiedReasonsList lead unqualified reasonsread

Custom fields & documents

OperationWhat it doesScope
listCustomFieldsList custom field definitionsread
listDocumentsList documents on a recordread
getDocumentGet documentread

Visits

OperationWhat it doesScope
listVisitsList visitsread
listVisitOutcomesList visit outcomesread

Users & account

OperationWhat it doesScope
listUsersList usersprofile
getUserGet userprofile
getSelfGet the authenticating userprofile
getAccountGet account detailsprofile

Search (v3)

OperationWhat it doesScope
searchContactsSearch contactsread — a POST that only reads; Zendesk does not document whether it checks read or write, so grant both if refused
searchLeadsSearch leadsread — a POST that only reads; Zendesk does not document whether it checks read or write, so grant both if refused
searchDealsSearch dealsread — a POST that only reads; Zendesk does not document whether it checks read or write, so grant both if refused
searchNotesSearch notesread — a POST that only reads; Zendesk does not document whether it checks read or write, so grant both if refused
searchTasksSearch tasksread — a POST that only reads; Zendesk does not document whether it checks read or write, so grant both if refused

Example

Create a deal against an existing contact

Zendesk Sell is a separate product from Zendesk Support with its own API and its own node. A deal needs a contact to hang off, so the usual shape is: find or create the contact, then create the deal referencing it.

Set Operation to createDeal, then fill in:

FieldValueNotes
name{{ myTrigger.company }} — annual planDeal name
bodyJson{"contact_id": {{ contact.id }}, "value": "4800", "currency": "USD"}Sell addresses the contact by numeric id, not email

Sets {{deal.id}} and {{deal.record}}.