API reference / Routines and triggers
Make a trigger
Makes a trigger. Without event, it is a webhook: each request to its URL is an event, and the teammate gets a task with its instructions and the event. With event, something in a product of Troopy starts it, and each event names the record to read: send no sender, secret or fields then. An event is material for the teammate, never instructions. Events that come before the teammate starts go on one task. Every run uses the organization's AI plan, so this needs an owner or admin. Get the URL of a webhook trigger in the app, on the page of its routine (Routines).
/api/v1/triggersOther ways to call it
troopy triggers createtroopy_create_triggerIdempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.Body
application/jsonagent*stringThe teammate's handle, like chief
At most 40 characters
name*stringAt least 1 characters · At most 80 characters
task*stringWhat the teammate does with each event, as you'd tell the teammate
At least 1 characters · At most 2000 characters
eventenum<string>Something in a product of Troopy that starts the trigger, in the place of a webhook. customer.*: a customer signed up, started a trial, started to pay, had a failed payment, asked to cancel, left, came back or became at risk. feedback.added: a customer said something. dispute.opened, dispute.closed. outreach.reply: a reply to a campaign email. mailbox.mail: new mail in a mailbox with Read all. ticket.released: an engineering ticket went live. The teammate must hold the tool that reads the record
customer.signed_upcustomer.trial_startedcustomer.subscribedcustomer.payment_failedcustomer.cancel_requestedcustomer.churnedcustomer.came_backcustomer.risk_raisedfeedback.addeddispute.openeddispute.closedoutreach.replymailbox.mailticket.releasedanalytics.spikeanalytics.drop
optionstringFor mailbox.mail: the id of the one mailbox whose mail starts the trigger. Without it, every mailbox with Read all. For customer.signed_up: work_email, so that only a user whose email names a company starts the trigger
senderenum<string>Who sends the requests of a webhook. url when you send none
urlgithubstripeshopifystandardhmac
secretstringThe signing secret that the sender made (stripe, shopify, standard). It goes in and never comes out
At least 1 characters · At most 500 characters
fieldsarray<string>Only these paths of an event reach the teammate. Empty for the whole event
Default [] · At most 20 items
maxPerDayintegerThe most tasks that it starts in a UTC day
Default 20 · At least 1 · At most 200
eventsPerTaskintegerThe most events that one task holds. Give 1 when a run can do the work of one event only, as the research of a lead
Default 10 · At least 1 · At most 10
Response
201 · application/jsondata*object17 properties
id*stringA 24-character id
agent*stringThe handle of the teammate that it starts
name*stringtask*stringWhat the teammate does with each event
source*enum<string>webhook: a request to its URL starts it. event: something in a product of Troopy starts it
webhookevent
event*enum<string> | nullWhat starts it in Troopy, like customer.cancel_requested. Null for a webhook
customer.signed_upcustomer.trial_startedcustomer.subscribedcustomer.payment_failedcustomer.cancel_requestedcustomer.churnedcustomer.came_backcustomer.risk_raisedfeedback.addeddispute.openeddispute.closedoutreach.replymailbox.mailticket.releasedanalytics.spikeanalytics.drop
option*string | nullWhat narrows its event: for mailbox.mail, the id of one mailbox. For customer.signed_up, work_email. Null for every one
sender*enum<string>Who sends the requests of a webhook. It says how Troopy checks each one
urlgithubstripeshopifystandardhmac
needsSecret*booleanIts sender makes the signing secret, and Troopy does not have it yet. Troopy refuses each request until then
fields*array<string>The paths of an event that reach the teammate, like issue.title. Empty: the whole event
maxPerDay*integerThe most tasks that it starts in a UTC day. Later events of the day are held
eventsPerTask*integerThe most events that one task holds
paused*booleanpausedWhy*string | nullWhy Troopy paused it. Null when a person paused it, or it is on
lastEventAt*string | nulltoday*objectIts events, and the tasks that it started, in this UTC day
2 properties
events*integertasks*integercreatedAt*stringISO 8601 date and time