Event catalog
Every event ServFlo sends to webhooks, grouped by area, with the fields of its data.
ServFlo sends 107 kinds of event. Each delivery's body is the event envelope with the fields below in data. Event data carries ids, statuses, amounts and dates only: never names, addresses, notes, secrets or costs. Read the full record with the API when you need it (the record's id is data.recordId).
Subscribe to any of these by name when you create a webhook endpoint, or leave the list empty to receive every event. The same list is available from the API: List event types.
Common to every event:
Field in data | Type | Description |
|---|---|---|
recordId | string | The record the event is about. Its type is the event's prefix: invoice.paid carries an invoice id. |
identifier | string (optional) | The record's number when it has one, such as INV-12 or JOB-4. |
Customers
customer.created
A customer (or lead) was created.
Field in data | Type | Description |
|---|---|---|
type | enum | One of RESIDENTIAL, COMMERCIAL. |
status | string | |
leadSourceId | string (optional) |
customer.updated
A customer's details changed. fields names what changed (never the values).
Field in data | Type | Description |
|---|---|---|
fields | array of string |
portal.link_created
A customer portal link was created or replaced.
Field in data | Type | Description |
|---|---|---|
customerId | string |
portal.session_revoked
A customer's portal session ended early: they signed out, staff signed them out, or sign-in was turned off. recordId is the session.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
reason | enum | One of SIGNED_OUT, STAFF, SIGN_IN_DISABLED, REPLACED. |
portal.signed_in
A customer signed in to their portal with a code or a one-tap email link. recordId is the customer session.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
method | enum | One of EMAIL_CODE, SMS_CODE, EMAIL_LINK. |
portal.viewed
A customer opened their portal.
Field in data | Type | Description |
|---|---|---|
customerId | string |
Requests and quotes
booking.confirmed
A slot booked online became a job: by staff, or at once with automatic confirmation.
Field in data | Type | Description |
|---|---|---|
jobId | string | |
scheduledDate | string | YYYY-MM-DD in the business's calendar. |
automatic | boolean |
quote.approved
A quote was approved (by the customer, or by staff for them).
Field in data | Type | Description |
|---|---|---|
byStaff | boolean (optional) |
quote.changes_requested
The customer asked for changes to a quote.
Field in data | Type | Description |
|---|
quote.converted
An approved quote became a job or an invoice.
Field in data | Type | Description |
|---|---|---|
jobId | string (optional) | |
invoiceId | string (optional) |
quote.created
A quote was created.
Field in data | Type | Description |
|---|
quote.declined
The customer declined a quote.
Field in data | Type | Description |
|---|
quote.sent
A quote was sent to the customer.
Field in data | Type | Description |
|---|
request.archived
A request was archived.
Field in data | Type | Description |
|---|
request.assessment_scheduled
An on-site assessment was booked for a request.
Field in data | Type | Description |
|---|---|---|
jobId | string |
request.converted
A request became a job.
Field in data | Type | Description |
|---|---|---|
jobId | string |
request.created
A service request came in (by staff, online booking or the portal).
Field in data | Type | Description |
|---|---|---|
source | enum | One of MANUAL, ONLINE_BOOKING, PORTAL, FIELD, PHONE. |
Jobs and visits
agreement.signed
A pre-service agreement on a job was signed.
Field in data | Type | Description |
|---|---|---|
jobId | string | |
customerId | string | |
byStaff | boolean | Recorded by staff on site rather than signed from the link. |
form.submitted
A job form was submitted.
Field in data | Type | Description |
|---|---|---|
jobId | string |
job.cancelled
A job was cancelled.
Field in data | Type | Description |
|---|---|---|
technicianId | string (optional) | |
customerId | string |
job.completed
A job (or visit) was completed.
Field in data | Type | Description |
|---|---|---|
technicianId | string (optional) | |
customerId | string | |
visitId | string (optional) | |
completedAt | string (optional) | ISO 8601 time (UTC). |
job.created
A job was created.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
propertyId | string (optional) | |
technicianId | string (optional) | |
serviceTypeId | string (optional) | |
scheduledDate | string (optional) | YYYY-MM-DD in the business's calendar. |
status | string |
job.scheduled
A job (or one of its visits) got a new date, time or technician.
Field in data | Type | Description |
|---|---|---|
visitId | string (optional) | |
scheduledDate | string (optional) | YYYY-MM-DD in the business's calendar. |
scheduledTime | string (optional) | |
technicianId | string (optional) | |
previousTechnicianIds | array of string (optional) | Technicians taken off the job or visit by this change (they are told). |
job.signed
The customer signed off a job.
Field in data | Type | Description |
|---|
job.started
Work on a job (or visit) started.
Field in data | Type | Description |
|---|---|---|
technicianId | string (optional) | |
customerId | string | |
visitId | string (optional) | |
startedAt | string (optional) | ISO 8601 time (UTC). |
service_report.assistant_applied
A person accepted a change the inspection assistant proposed for a report (status, describe answers, findings, notes or a new section); it was applied through the normal report edits.
Field in data | Type | Description |
|---|---|---|
jobId | string | |
proposalId | string | |
kind | enum | One of ITEM, SECTION. |
findings | integer | Findings added (marked AI-assisted). |
service_report.published
A service report (inspection, service or test report) was published as a new version.
Field in data | Type | Description |
|---|---|---|
jobId | string | |
customerId | string | |
version | integer |
service_report.released
A published service report opened for its client (by its release rule: published, paid, agreement signed, or a manual unlock).
Field in data | Type | Description |
|---|---|---|
jobId | string | |
customerId | string | |
version | integer |
service_report.viewed
Someone opened a service report from their link for the first time.
Field in data | Type | Description |
|---|---|---|
jobId | string | |
accessId | string | |
role | enum | One of CLIENT, BUYER_AGENT, LISTING_AGENT, OTHER. |
service_report_template_draft.ready
A report template drafted by AI from a business's standards document finished reading (ready to review) or failed. recordId is the draft.
Field in data | Type | Description |
|---|---|---|
status | enum | One of REVIEW, FAILED. |
pages | integer (optional) | |
sections | integer | |
items | integer | |
comments | integer |
technician.on_my_way
A technician is on the way to a job.
Field in data | Type | Description |
|---|---|---|
technicianId | string (optional) | |
customerId | string | |
visitId | string (optional) | |
onMyWayAt | string | ISO 8601 time (UTC). |
visit.cancelled
A visit of a job was cancelled (its reminders are withdrawn).
Field in data | Type | Description |
|---|---|---|
jobId | string | |
customerId | string |
Invoices
invoice.created
An invoice was created (usually as a draft).
Field in data | Type | Description |
|---|---|---|
customerId | string | |
jobId | string (optional) | |
membershipId | string (optional) | |
progressBillingId | string (optional) | The progress billing it belongs to, if any. |
status | string | |
totalCents | integer | Integer cents. |
dueDate | string (optional) | YYYY-MM-DD in the business's calendar. |
invoice.overdue
An unpaid invoice passed its due date (the scheduler's overdue sweep).
Field in data | Type | Description |
|---|---|---|
customerId | string | |
dueDate | string (optional) | YYYY-MM-DD in the business's calendar. |
balanceDueCents | integer | Integer cents. |
invoice.paid
An invoice was paid in full.
Field in data | Type | Description |
|---|---|---|
amountPaidCents | integer | Integer cents. |
balanceDueCents | integer | Integer cents. |
invoice.partially_paid
A payment left part of an invoice due.
Field in data | Type | Description |
|---|---|---|
amountPaidCents | integer | Integer cents. |
balanceDueCents | integer | Integer cents. |
invoice.sent
An invoice was issued to the customer (status SENT).
Field in data | Type | Description |
|---|---|---|
customerId | string | |
totalCents | integer | Integer cents. |
balanceDueCents | integer | Integer cents. |
dueDate | string (optional) | YYYY-MM-DD in the business's calendar. |
invoice_batch.completed
A batch action on invoices finished (batch create from jobs, batch send, reminders or mark sent); recordId is the batch key.
Field in data | Type | Description |
|---|---|---|
action | enum | One of create, send, remind, mark_sent. |
requested | integer | |
succeeded | integer | |
skipped | integer | |
failed | integer | |
invoiceIds | array of string | Invoices created or acted on. |
progress_billing.completed
A progress billing has billed its whole contract and released any retainage.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
contractCents | integer | Integer cents. |
progress_billing.created
A quote or job was set up for progress billing (milestones or percent complete).
Field in data | Type | Description |
|---|---|---|
customerId | string | |
quoteId | string (optional) | |
jobId | string (optional) | |
method | enum | One of MILESTONES, PERCENT_COMPLETE. |
contractCents | integer | Integer cents. |
retainagePercent | number |
progress_billing.invoiced
A progress, final or retainage-release invoice was made from a progress billing.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
invoiceId | string | |
role | enum | One of PROGRESS, FINAL, RETAINAGE_RELEASE. |
billedCents | integer | Contract work billed on it, before retainage and tax. |
retainageCents | integer | Retainage held (positive) or released (negative). |
billedToDateCents | integer | Integer cents. |
contractCents | integer | Integer cents. |
Payments
payment.disputed
A customer's bank opened a dispute (chargeback) on an online payment.
Field in data | Type | Description |
|---|---|---|
invoiceId | string (optional) | |
amountCents | integer | Integer cents. |
status | string | |
reason | string (optional) |
payment.failed
An online payment failed: declined, the bank asked for authentication on an automatic charge, a bank debit bounced, or the checkout page expired unpaid.
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
invoiceId | string (optional) | |
quoteId | string (optional) | |
amountCents | integer | Integer cents. |
tipCents | integer (optional) | Integer cents. |
reason | string | Stripe's code (card_declined, authentication_required…) or checkout_expired / checkout_replaced / bank_debit_failed. |
channel | enum (optional) | One of PORTAL, INVOICE_LINK, QUOTE_PAGE, STAFF, AUTOPAY. |
payment.recorded
Money was received: against an invoice, or a quote deposit.
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
invoiceId | string (optional) | |
quoteId | string (optional) | |
deposit | boolean (optional) | |
amountCents | integer | Integer cents. |
tipCents | integer (optional) | Integer cents. |
method | enum | One of CASH, CHECK, CARD, BANK_TRANSFER, OTHER. |
notifyCustomer | boolean (optional) | |
processor | enum (optional) | STRIPE for an online payment settled by Stripe; MANUAL (or absent) when staff recorded it. One of MANUAL, STRIPE. |
payment.refunded
A payment was (partly) refunded.
Field in data | Type | Description |
|---|---|---|
refundId | string | |
amountCents | integer | Integer cents. |
invoiceId | string (optional) | |
quoteId | string (optional) |
payments.account_updated
The business's Stripe account changed standing: connected, charges or payouts enabled or paused, details submitted, or disconnected.
Field in data | Type | Description |
|---|---|---|
state | enum | One of NOT_CONNECTED, ONBOARDING, RESTRICTED, ACTIVE. |
chargesEnabled | boolean | |
payoutsEnabled | boolean | |
detailsSubmitted | boolean |
Memberships
membership.billed
A membership billing period was invoiced.
Field in data | Type | Description |
|---|---|---|
invoiceId | string | |
periodStart | string | YYYY-MM-DD in the business's calendar. |
periodEnd | string | YYYY-MM-DD in the business's calendar. |
membership.cancelled
A membership was cancelled.
Field in data | Type | Description |
|---|---|---|
finalInvoiceId | string (optional) |
membership.created
A customer signed up to a membership plan.
Field in data | Type | Description |
|---|---|---|
customerId | string | |
planId | string |
membership.expired
A membership's term ended without renewal.
Field in data | Type | Description |
|---|
membership.paused
A membership was paused.
Field in data | Type | Description |
|---|---|---|
pausedUntil | string (optional) | YYYY-MM-DD in the business's calendar. |
membership.renewed
A membership started a new term.
Field in data | Type | Description |
|---|---|---|
termNumber | integer | |
manual | boolean |
membership.visit_due
An included member visit's window opened; its job waits to be scheduled.
Field in data | Type | Description |
|---|---|---|
membershipVisitId | string | |
jobId | string (optional) | |
dueMonth | string | |
dueDate | string (optional) |
Team
chat.message_sent
Someone wrote in team chat (the team, a direct message or a job's conversation).
Field in data | Type | Description |
|---|---|---|
conversationId | string | |
kind | enum | One of TEAM, DIRECT, JOB. |
jobId | string (optional) |
payroll.closed
A pay period was closed for payroll: its time entries are locked until it is reopened. recordId is organizationId:periodStart.
Field in data | Type | Description |
|---|---|---|
periodStart | string | YYYY-MM-DD in the business's calendar. |
periodEnd | string | YYYY-MM-DD in the business's calendar. |
people | integer | |
unapprovedEntries | integer |
payroll.reopened
A closed pay period was reopened so its time can change. recordId is organizationId:periodStart.
Field in data | Type | Description |
|---|---|---|
periodStart | string | YYYY-MM-DD in the business's calendar. |
periodEnd | string | YYYY-MM-DD in the business's calendar. |
technician.linked
A technician record was linked to a ServFlo account.
Field in data | Type | Description |
|---|---|---|
userId | string | |
via | enum | One of member, email. |
time.clocked_in
Someone clocked in.
Field in data | Type | Description |
|---|---|---|
userId | string | |
technicianId | string (optional) |
time.clocked_out
Someone clocked out.
Field in data | Type | Description |
|---|---|---|
userId | string | |
technicianId | string (optional) | |
minutes | integer |
timesheet.approved
A weekly timesheet was approved.
Field in data | Type | Description |
|---|---|---|
userId | string | |
weekStart | string | YYYY-MM-DD in the business's calendar. |
entries | integer |
timesheet.rejected
A weekly timesheet was sent back.
Field in data | Type | Description |
|---|---|---|
userId | string | |
weekStart | string | YYYY-MM-DD in the business's calendar. |
entries | integer |
timesheet.submitted
A weekly timesheet was submitted for approval.
Field in data | Type | Description |
|---|---|---|
userId | string | |
weekStart | string | YYYY-MM-DD in the business's calendar. |
entries | integer |
Inventory and purchasing
expense.recorded
An expense was recorded.
Field in data | Type | Description |
|---|---|---|
amountCents | integer | Integer cents. |
jobId | string (optional) |
inventory.low_stock
An item reached its reorder point at a location.
Field in data | Type | Description |
|---|---|---|
locationId | string | |
onHand | number | |
reorderPoint | number (optional) |
inventory.negative_stock
An item went below zero at a location.
Field in data | Type | Description |
|---|---|---|
locationId | string | |
onHand | number | |
reorderPoint | number (optional) |
inventory.transferred
Stock moved between locations.
Field in data | Type | Description |
|---|---|---|
fromLocationId | string | |
toLocationId | string | |
lines | integer |
parts_request.created
A technician asked for parts (for a job or to restock their truck).
Field in data | Type | Description |
|---|---|---|
kind | enum | One of JOB, RESTOCK. |
technicianId | string (optional) | |
jobId | string (optional) |
parts_request.status_changed
The office moved a parts request along (on order, ready, done, cancelled).
Field in data | Type | Description |
|---|---|---|
technicianId | string (optional) | |
status | enum | One of REQUESTED, ORDERED, READY, DONE, CANCELLED. |
pricebook.imported
A pricebook CSV was imported.
Field in data | Type | Description |
|---|---|---|
created | integer | |
updated | integer |
pricebook.repriced
Markup items were repriced.
Field in data | Type | Description |
|---|---|---|
items | integer |
purchase_order.cancelled
A purchase order was cancelled.
Field in data | Type | Description |
|---|
purchase_order.received
Items on a purchase order were received.
Field in data | Type | Description |
|---|---|---|
status | string | |
jobId | string (optional) | |
lines | integer |
purchase_order.sent
A purchase order was sent to its vendor.
Field in data | Type | Description |
|---|---|---|
vendorId | string |
Commissions
commission.approved
Commission lines were approved.
Field in data | Type | Description |
|---|---|---|
lines | integer | |
totalCents | integer | Integer cents. |
commission.calculated
Commissions were calculated for a pay period.
Field in data | Type | Description |
|---|---|---|
periodStart | string | YYYY-MM-DD in the business's calendar. |
periodEnd | string | YYYY-MM-DD in the business's calendar. |
lines | integer | |
totalCents | integer | Integer cents. |
commission.paid
Commission lines were marked paid.
Field in data | Type | Description |
|---|---|---|
lines | integer | |
totalCents | integer | Integer cents. |
Messages and automations
automation.disabled
An automation (engagement rule) was turned off.
Field in data | Type | Description |
|---|---|---|
presetKey | string (optional) | |
triggerType | enum | One of EVENT, SCHEDULE, ABSENCE, RELATIVE. |
automation.enabled
An automation (engagement rule) was turned on.
Field in data | Type | Description |
|---|---|---|
presetKey | string (optional) | |
triggerType | enum | One of EVENT, SCHEDULE, ABSENCE, RELATIVE. |
consent.changed
A contact method's messaging consent changed (STOP / START reply, the unsubscribe page, staff, a bounce).
Field in data | Type | Description |
|---|---|---|
customerId | string | |
channel | enum | One of EMAIL, SMS. |
purpose | enum | One of TRANSACTIONAL, MARKETING. |
status | enum | One of OPTED_IN, OPTED_OUT. |
source | string | reply:STOP, reply:START, unsubscribe-page, staff, bounce, complaint. |
message.bounced
An email bounced or was marked as spam; its address is suppressed.
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
channel | enum | One of EMAIL, SMS. |
kind | enum | One of BOUNCE, COMPLAINT. |
message.delivered
The provider confirmed a message was delivered.
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
channel | enum | One of EMAIL, SMS. |
ruleId | string (optional) |
message.failed
A message could not be sent (the provider refused it).
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
channel | enum | One of EMAIL, SMS. |
ruleId | string (optional) | |
reason | string | A short code: provider_error, provider_not_configured … |
message.replied
A customer replied to a text (logged as an inbound message). Ends cadences that list it as an exit.
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
channel | enum | One of EMAIL, SMS. |
inReplyToId | string (optional) | |
keyword | enum (optional) | Set when the reply was an opt-out, opt-in or help keyword. One of STOP, START, HELP. |
message.sent
A customer email or text was sent (or, in test mode, rendered and logged as SENT_TEST).
Field in data | Type | Description |
|---|---|---|
customerId | string (optional) | |
channel | enum | One of EMAIL, SMS. |
purpose | enum | One of TRANSACTIONAL, MARKETING. |
source | enum | One of AUTOMATION, MANUAL, TEST, INBOUND, CAMPAIGN, SYSTEM. |
status | enum | One of SENT, SENT_TEST. |
ruleId | string (optional) | |
subjectType | string (optional) | |
subjectId | string (optional) | |
campaignId | string (optional) |
Marketing
campaign.cancelled
A campaign was cancelled before it finished.
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
campaign.completed
Every recipient of a campaign was handled (queued, or skipped with the reason).
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
queued | integer | |
skipped | integer |
campaign.paused
A sending or scheduled campaign was paused.
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
campaign.resumed
A paused campaign was resumed.
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
campaign.scheduled
A marketing campaign was scheduled for later (a time, or each recipient's local time).
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
audienceCount | integer |
campaign.started
A marketing campaign started sending.
Field in data | Type | Description |
|---|---|---|
channels | array of enum | |
status | enum | One of DRAFT, SCHEDULED, SENDING, PAUSED, SENT, CANCELLED. |
audienceCount | integer |
referral.converted
A referred customer converted (first paid invoice by default); the referrer's reward was issued unless the cap withheld it.
Field in data | Type | Description |
|---|---|---|
referrerCustomerId | string | |
referredCustomerId | string | |
rewardWithheld | boolean |
referral.created
Someone came in through a customer's referral link, or staff recorded a referral.
Field in data | Type | Description |
|---|---|---|
referrerCustomerId | string | |
referredCustomerId | string (optional) | |
requestId | string (optional) | |
source | enum | One of LINK, STAFF. |
referral.rejected
A referral was refused: self-referral, an existing customer, or by staff.
Field in data | Type | Description |
|---|---|---|
referrerCustomerId | string | |
reason | enum | One of SELF_REFERRAL, EXISTING_CUSTOMER, DUPLICATE, STAFF. |
referral.reward_applied
A referral reward was used: a credit line on an invoice, or the gift card was sent.
Field in data | Type | Description |
|---|---|---|
referralId | string | |
customerId | string | |
invoiceId | string (optional) | |
amountCents | integer | Integer cents. |
referral.reward_issued
A referral reward was earned.
Field in data | Type | Description |
|---|---|---|
referralId | string | |
customerId | string | |
party | enum | One of REFERRER, FRIEND. |
kind | enum | One of ACCOUNT_CREDIT, DISCOUNT, GIFT_CARD, NONE. |
amountCents | integer | Integer cents. |
Website
website.deleted
The business's website was deleted with its pages, addresses and stats (the image library stays).
Field in data | Type | Description |
|---|---|---|
subdomain | string | |
wasPublished | boolean |
website.domain_activated
A custom domain passed its DNS checks and now serves the website.
Field in data | Type | Description |
|---|---|---|
hostname | string |
website.published
The business's website was published (or republished).
Field in data | Type | Description |
|---|---|---|
pageCount | integer |
website.unpublished
The business's website was taken down.
Field in data | Type | Description |
|---|
Reviews
feedback.submitted
A customer rated their service when paying (stars and a comment, kept in ServFlo). Low ratings are worth a call.
Field in data | Type | Description |
|---|---|---|
rating | integer | 1–5 stars. |
customerId | string | |
invoiceId | string | |
jobId | string (optional) |
review.received
A new Google review arrived (synced from the Business Profile). Low ratings are worth a quick reply.
Field in data | Type | Description |
|---|---|---|
rating | integer | 1–5 stars. |
locationId | string | |
customerId | string (optional) | The customer it was matched to by name, if one. |
review.replied
The business replied publicly to a Google review.
Field in data | Type | Description |
|---|---|---|
rating | integer |
Phone
call.completed
A call ended: answered (COMPLETED), MISSED, VOICEMAIL or, for an outbound call, FAILED.
Field in data | Type | Description |
|---|---|---|
direction | enum | One of INBOUND, OUTBOUND. |
status | enum | One of COMPLETED, MISSED, VOICEMAIL, FAILED. |
source | enum (optional) | One of MAIN, WEBSITE, GOOGLE_BUSINESS, CAMPAIGN, QR_CODE, BUSINESS_UNIT, PRINT, OTHER, PERSONAL. |
phoneNumberId | string (optional) | |
customerId | string (optional) | |
durationSeconds | integer (optional) |
call.received
An inbound call reached one of the business's numbers (before anyone answered).
Field in data | Type | Description |
|---|---|---|
direction | enum | One of INBOUND, OUTBOUND. |
source | enum (optional) | One of MAIN, WEBSITE, GOOGLE_BUSINESS, CAMPAIGN, QR_CODE, BUSINESS_UNIT, PRINT, OTHER, PERSONAL. |
phoneNumberId | string (optional) | |
customerId | string (optional) | |
afterHours | boolean |
System
billing.addon_acknowledged
An owner accepted a paid add-on's usage terms (adding it, turning on ServFlo-managed telephony, or after a price change). recordId is the acknowledgement.
Field in data | Type | Description |
|---|---|---|
addonKey | string | |
context | enum | One of ADD_ADDON, MANAGED_TELEPHONY, REVIEW. |
priceVersion | string | |
userId | string |
import.completed
A migration import finished. The only event of an import: its records emit no events of their own. recordId is the import run.
Field in data | Type | Description |
|---|---|---|
source | enum | One of JOBBER, SERVICETITAN, SPREADSHEET. |
created | integer | |
updated | integer |
webhook.test
A test event sent from Settings → Developers → Webhooks to one endpoint only. Sent only by Send test event; you cannot subscribe to it.
Field in data | Type | Description |
|---|---|---|
message | string |