What a webhook is here
A webhook is a URL you own. When something happens in FirmLinks — a firm is invited to a service, an invitation is awarded, a firm applies to one of your groups — we POST a JSON body to that URL. Your system reads it and does whatever it does: create a deal, update a company record, post to a channel, write a row.
The screen is Settings → Webhooks. It has two tabs: Webhooks, the endpoints your firm has configured, and History, every delivery we have attempted.
Three things are worth knowing before you build anything.
- One webhook subscribes to exactly one event. There is no "all events" option and no multi-select. If you want five events, create five webhooks — they can all point at the same URL, and each gets its own signing secret.
- Nothing is pulled. There is no endpoint for you to poll and no way to ask for the deliveries you missed. A delivery either reaches you or it is recorded as a failure on History for somebody to retry.
- A delivery is built for the firm receiving it. One event that concerns several firms produces a separate body per firm, and those bodies are not identical — each is that firm's own view, so a figure one firm may not see is simply absent from its copy rather than blanked out.
Only an account administrator can create, edit, pause or delete a webhook. Everybody at the firm can see the list and the delivery history.
Creating one
Settings → Webhooks → New webhook. Three fields:
- Name — yours, for the list. Two webhooks may share a name, so don't use it as a key; every row also carries an id.
- Endpoint URL — where we POST. Use https. The endpoint has to be reachable from the public internet: there is no IP allowlist to add us to, and no fixed source address for you to allowlist.
- Event — one event, chosen from a grouped list: Engagements, Services, Invitations, Contacts, Network groups, Connections, Platform invitations. The dialog shows a sample delivery for whichever event you pick — the same samples printed further down this article.
Optionally, a custom header, described below.
What your endpoint has to do:
- accept
POSTwithContent-Type: application/json; - answer 2xx — anything else, a redirect included, counts as a failure;
- answer within 5 seconds, measured per network operation. Acknowledge first and do the work afterwards; a receiver that processes the payload before answering is the usual cause of a timeout.
When you save, the response shows the signing secret once. Copy it then. There is no read-back — no screen and no endpoint will ever show it again, and the only recovery is a rotation.
The signing secret, and exactly how to verify a delivery
Every delivery carries this header:
X-FirmLinks-Signature: t=1789594582,v1=3045c1cb8e0f…
tis the moment we signed, in whole seconds since the Unix epoch.v1is a hex-encoded HMAC-SHA256, keyed with your signing secret, computed over the string<t>followed by.followed by the raw request body.
The timestamp is inside the signed string. That is what stops a captured delivery being replayed at you forever, so don't skip it.
To verify a delivery:
- Read the raw body bytes, before any JSON parsing, and verify against those. If you parse and re-serialize first, the bytes change — key order, spacing and unicode escaping all differ between libraries — and every signature fails while looking perfectly correct at both ends.
- Split the header on commas into a
t=value and one or morev1=values. - Compute
HMAC-SHA256(secret, "<t>." + body)and hex-encode it. - Accept if it equals any of the
v1values, using a constant-time comparison. - Reject if
tis more than 300 seconds (5 minutes) old. We publish that tolerance; we don't enforce it for you, because the clock that matters is yours.
There can be two v1 values, newest first, and that is not an error — it means a rotation is in progress. Check every one of them and accept on the first match.
A worked example, in Python:
import hashlib
import hmac
import time
TOLERANCE_SECONDS = 300
def verify(raw_body: bytes, header: str, secret: str) -> bool:
pairs = [part.split("=", 1) for part in header.split(",") if "=" in part]
timestamp = next((value for key, value in pairs if key == "t"), "")
signatures = [value for key, value in pairs if key == "v1"]
if not timestamp.isdigit() or not signatures:
return False
if abs(time.time() - int(timestamp)) > TOLERANCE_SECONDS:
return False
signed = timestamp.encode() + b"." + raw_body
expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
return any(hmac.compare_digest(expected, candidate) for candidate in signatures)
The same thing in any other language is four steps: concatenate, HMAC, hex-encode, compare.
Rotating the secret
Open the webhook's Edit dialog, find Signing secret, and press Rotate. A new secret is minted and shown once, and the old one keeps verifying for 24 hours. During that window every delivery carries two v1 entries, one per secret, so you can deploy the new secret whenever suits you inside the day instead of during a hard cutover. The row tells you when the overlap ends.
A webhook created before signing existed says "Created before signing — rotate to get a signed secret". Rotate it: until you do, its deliveries are signed with an older, weaker credential.
The optional custom header
Some systems cannot compute an HMAC and can only match one fixed header value — an API key, a bearer token. You can add one in the Edit dialog: a header name and a value, both required together, and clearing both removes it.
- The name must be a valid HTTP header name — letters, digits and
! # $ % & ' * + - . ^ _ | ~. No spaces, colons or quotes. - You cannot use
Host,Content-Type,Content-Length, or any name beginningX-FirmLinks-. Those are ours or the transport's, and one of them is the signature itself. - The value is capped at 1024 bytes.
- The value is write-only. The screen shows the header's name, so you can see which header is configured while debugging your receiver; the value never comes back, and an ordinary edit of the name or URL cannot blank it.
A custom header is in addition to the signature, never instead of it. We still sign every delivery. Ignoring the signature is your choice, but it is the stronger credential of the two — and a static header value is sent in full on every request, so treat it like a password.
The delivery envelope
Every delivery, on all 31 events, is a small header plus one data object. You can log, deduplicate and route a delivery from the header alone, without branching on the event.
event— the event name, for exampleinvitation.awarded. This is the string you branch on, and it tells you which shapedatahas.deliveryId— this delivery. It is the same id the History tab shows, so quoting it in a support request names a row we can find. A retry is a new delivery and gets a new id.occurredAt— when the thing happened: the event's own moment, not when we posted it. The two differ on a retry and on anything that queued behind a slow endpoint, and this is the one your records want. UTC, ISO 8601, e.g.2026-09-03T15:20:44Z.firm— the firm receiving the delivery, which is your own firm and never the other side. It is on every delivery because one event is sent separately to each firm entitled to hear it.actor— the person who did it. Omitted when no person caused the event: a status the product moved by itself has no actor, and naming one would be a false audit trail.data— the records the event is about. One documented shape per event, described below.
A firm — firm, and every firm inside data — carries:
id— the firm's id in FirmLinks.name— its name.domain— its primary domain, and the field to match a company on in your own system. A validated domain wins over an unvalidated one. Omitted when the firm has none recorded.
A person carries id, name, and email (omitted when they have none on record).
Where somebody has been invited who is not on FirmLinks yet, they appear as an invitee rather than a firm, because there is no record to point at:
email— the address the invitation went to. Always present.firstName,lastName— omitted when the inviter gave none.firmName— the firm name as the inviter typed it. A claim about a firm, not a firm we know.
Absent means absent
A key that is missing is not a key set to null, and it is not an error. Four rules, applied to every object in every delivery:
- A value we don't know is an absent key — never
null, never an empty stand-in. - An amount of zero is an absent key. The screens draw a dash for an unpriced line; a
0on the wire would read as free work. - An empty list or an empty string is sent as it is. "This engagement has no partner firms" and "no display name was set" are facts, not absences.
- A block that would arrive with no fields at all is dropped, not sent empty. You will never receive
"client": {}— either the record is there or the key is not.
Two cases deserve particular attention:
valueandcurrencyon an invitation are omitted in two situations you cannot tell apart, deliberately: nobody has priced the bid yet, or your firm is not entitled to see that figure. Treat a missing amount as "no amount known to you", never as zero.declineReasonandendedReasonare omitted both when nobody wrote one and when the delivery is going to a firm not entitled to read it.
Where an amount is sent, currency is always USD today.
The ten shapes of data
data carries the same records the application itself works with, scoped to the firm receiving the delivery. Ten shapes cover the 31 events:
engagement—engagement.created,engagement.opened,engagement.closed_won,engagement.closed_lost,engagement.canceledengagement+information—engagement.info_addedengagement+service—service.added,service.canceled,engagement.service.assignedengagement+invitation— all eightinvitation.*eventsengagement+contact—contact.added,contact.removed,contact.primary_changedgroupInvitation—group.invitation.sent,group.invitation.accepted,group.invitation.declinedgroupApplication—group.application.received,group.application.accepted,group.application.declinedconnection—connection.invitation.sent,connection.invitation.accepted,connection.invitation.declinedplatformInvitation—platform.invitation.sentplatformInvitation, withcreatedFirm—platform.invitation.accepted
engagement
The whole engagement, exactly as the engagement screen reads it for your firm: the client, the services, every partner firm and its bids, the contacts, the dates. It is a large object, and every field of it appears in the examples further down. The fields most integrations use are id, clientName, leadFirmId and leadFirmName, status, createdDate, and url — a link that opens the engagement in FirmLinks.
clientName obeys client confidentiality. On an engagement where the client has not been revealed to your firm, clientNameRevealed is false and clientName is not sent at all — along with the rest of the client block, which is dropped rather than delivered empty.
A webhook is also deliberately stricter than the screen here. Revealing a client's name is something an individual person does for themselves, and a delivery is addressed to a firm rather than to a person, so a delivery speaks for nobody's reveal: if the name has not been revealed, it is withheld. A colleague opening the engagement and revealing the client does not retrospectively put the name in your deliveries, and a delivery never counts as somebody opening the engagement.
invitation — the record most integrations are really buying
One firm's invitation to one service line.
id— this invitation: one firm, one service line.status— where it stands. The dead ends are not interchangeable:declined— the firm said no;passed— the firm said yes and the lead chose somebody else;canceled— the invitation was withdrawn;ended— an awarded arrangement was stopped. Don't merge them in a report.service— the service line this invitation is for, with its own id and name.invitedFirm— the firm that was invited, whose bid this is.leadFirm— the firm that owns the engagement and sent the invitation.assignedTo— the employee staffed on the line. Omitted when nobody is yet.value— what the invitation is worth. Omitted when unpriced or when your firm may not see it.currency—USD, sent only whenvalueis.respondBy— the date an answer was asked for, asYYYY-MM-DD. Omitted when none was.sentAt— when it was sent. Re-inviting a firm re-stamps this, so it is the most recent send rather than the first.awardedAt— when the bid was awarded. Omitted when it never was. A bid that died, was re-invited and awarded again keeps its original award moment.declineReason— why the firm declined, in its own words. Omitted when none was given, and when you are not entitled to read it.endedBy—leadorpartner: which side ended an awarded arrangement. These are roles, never firm names.endedAt,endedReason— when and why an award was ended. Omitted unless it was.
service
One service line on the engagement, already scoped to your firm: its name, the catalogue service it comes from, where the work is, the industry, who is staffed on it, its status and its dates. It is the same object the engagement carries in its own service list, and the examples show every field.
contact
The person the event is about, with their firm, their role on the engagement, their title, phone and email.
On contact.primary_changed the actor and the contact are two different people: actor moved the seat, contact is who it moved to. They coincide only by accident.
information
The dated note behind engagement.info_added — its text, when it was added and who wrote it. The note is the event; the engagement on its own would not say what had been added.
groupInvitation
id— this invitation.group— the group:id,name, itsadminFirm, andiconUrlwhen it has one.invitingFirm— the firm that sent it.invitedFirm— the firm invited, when that firm is on FirmLinks.invitee— the person invited, when the invitation went to an address whose firm is not on FirmLinks. Exactly one ofinvitedFirmandinviteeis ever present.note— what the inviting firm wrote. Omitted when they wrote nothing.status—pending,acceptedordeclined.sentAt,respondedAt—respondedAtis omitted while the invitation is still pending.
groupApplication
id— this application.group— as above.applicantFirm— the firm asking to join.submittedBy— the person who submitted it. Omitted when only the firm is recorded.status—pending,acceptedordeclined.referralIncentive— which referral arrangement they asked for:none,default(the group's standard one), orunique(one they described themselves). The value isnone, notno.referralDescription— the arrangement they described, whenreferralIncentiveisunique.submittedAt,decidedAt—decidedAtis omitted while the application is pending.
connection
Two firms connecting. A connection has no engagement and no group.
id— this connection invitation.invitingFirm— the firm that asked to connect.invitedFirmorinvitee— the other side: a firm when it is on FirmLinks, an invitee when it is an address whose firm is not. Never both.note— what the inviting firm wrote. Omitted when they wrote nothing.status—pending,acceptedordeclined. An accepted connection readsaccepted, neveractive.sentAt,respondedAt—respondedAtis omitted while pending.
platformInvitation
Somebody invited who is not on FirmLinks yet.
id— this invitation.invitingFirm— the firm that sent it, which is also the firm these deliveries go to.invitee— the person invited, as typed: email, first and last name, and afirmNamethat is a claim rather than a record.group— the network group they were invited into, when it was into one. Omitted for a plain invitation to the platform.status—pending, oracceptedonce they have signed up. A platform invitation is never declined; it is simply not accepted.createdFirm— onplatform.invitation.acceptedonly: the firm that now exists, with a real id and domain. This is the one delivery that lets you finish a company record you have been holding as a typed name.sentAt,acceptedAt—acceptedAtis omitted until they sign up, and is always present onplatform.invitation.accepted.
How delivery actually behaves
- Timing. Events are queued as they happen and picked up about every two seconds, so a delivery normally lands within a few seconds of the action.
- Timeout. 5 seconds per network operation. A slow endpoint is recorded as a failure.
- Success. Any 2xx. Everything else — 3xx, 4xx, 5xx — is a failure, recorded with the status code. A refused connection, a DNS failure or a TLS error is recorded with the error text instead of a code.
- There is no automatic retry when your endpoint fails. A failed delivery sits on History until a person presses Retry. Build for that: if your endpoint is down for an hour, nothing arrives late by itself.
- A duplicate delivery is possible, and you should be ready for one. Webhooks go out before the rest of an event's notifications, and if a later part fails the whole event is attempted again — up to five times — so your endpoint can receive the same event more than once, each time with a different
deliveryId. Deduplicate on the record's own ids — the engagement id, the invitation id, the application id — together witheventandoccurredAt, never ondeliveryId. - Order is not guaranteed. Deliveries are sent concurrently, so two events a second apart can arrive the other way round. Use
occurredAtto order them. - Nothing is held while a webhook is paused. See pausing, below.
- Every attempt is recorded — the exact bytes we sent, the result, the response code and any error — on the History tab.
The History tab
Settings → Webhooks → History, newest first, with a Find box that filters by webhook name or event. The columns:
- When — when we attempted the delivery. A retry is tagged
Retryhere, so it is not mistaken for a second event. - Webhook — which of your webhooks it was sent to.
- Event — the event name.
- Result — delivered, or failed.
- Response — the HTTP status your endpoint returned, or the error when there was no response.
- View — opens the delivery: the webhook, the event, the date, the response, any error message, and the exact payload we sent. Failed deliveries also offer Retry.
From a webhook's row menu on the Webhooks tab, See its deliveries filters History to that one webhook.
Retry re-sends one delivery, and only a failed one. There is deliberately no Retry beside a success: sending the same event twice, with no way for you to tell it is a duplicate, is worse than the failure. A retry re-sends the same body with a new deliveryId and a fresh signature — the original signature's timestamp would fall outside your replay window, so re-sending it would be refused by a correct receiver. Retry is refused while the webhook is paused; resume it first.
Pausing and resuming
A webhook's row menu has Pause deliveries and, once paused, Resume deliveries. The row then says "paused since" the moment you paused it.
Events that fire during a pause are dropped, not held. A paused webhook is not a subscriber: nothing queues, resuming replays nothing, and History has no rows for the pause window rather than a run of failures. Pause is for switching an integration off — it is not a buffer, and there is no way to ask for the events you missed.
Pausing an already-paused webhook is safe, and so is resuming a running one, so two tabs or a double-click cannot produce a refusal.
Editing and deleting
Edit changes the name, the URL and the event. Changing the event is a real re-subscription: the webhook stops receiving the old event immediately and starts on the new one.
Delete removes the webhook, and its delivery history goes with it. If you need the record of what was sent, read it first.
Limits
What the product enforces today:
- one event per webhook — no multi-select, no wildcard;
- custom header value: 1024 bytes;
- timeout: 5 seconds per network operation, and 2xx to succeed;
- signing timestamp tolerance: 5 minutes, published for you to enforce;
- rotation overlap: 24 hours, during which two signatures are sent.
What is not limited today: how many webhooks a firm may create, how large a delivery body may be (an engagement-carrying event runs to a few kilobytes), and the rate at which deliveries reach you. If you need a ceiling on any of those, ask us rather than assuming one.
Who receives which event
A webhook only fires for events your own firm is entitled to hear, and "entitled" is decided the same way the screens are: if your firm cannot see the record in the application, you get no delivery about it.
- Engagement, service and contact events go to every firm on the engagement — the lead firm, any firm holding a bid on it whether invited or awarded, a managing firm acting for one of them, and the firm that created it on somebody's behalf.
- Invitation events are narrower, and the difference matters. An invitation is about one firm's bid, which the application does not show to other bidders, so these reach only the lead firm, the firm whose bid it is, and a managing firm acting for that firm. If you are another firm bidding on the same service line, you will not hear about a competitor's invitation.
- Group events go to the firms named on the record and to the firm that administers the group.
- Connection events go to both firms.
- Platform invitation events go to the inviting firm — the only firm that exists at that point.
Within that, each body is built for its receiving firm, so what arrives is your own view of the record.
Every event, with a real example
One section per event, 31 in all. Each example is a complete delivery body, taken from the same samples the New webhook dialog shows, so they cannot drift from what we actually send. The values are illustrative; the shapes are not.
A delivery your own firm receives is scoped to your firm, so your copy may legitimately be missing a field you can see in an example here.
Engagements
engagement.created
The engagement record came into existence — somebody created it, by hand or with the assistant. It is not yet open to partner firms.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 0,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [],
"status": "Pending",
"statusCode": "pending",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000001",
"event": "engagement.created",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-03T15:20:44Z"
}
engagement.opened
The lead firm launched the engagement to partner firms. This and engagement.created are two different moments, not a duplicate pair.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000002",
"event": "engagement.opened",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-04T09:12:00Z"
}
engagement.closed_won
The engagement was closed as won.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"completedDate": "2026-09-12T17:40:11Z",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 9,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "Dana Okonkwo",
"assignedToId": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"awardedAt": "2026-09-11T16:45:02Z",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "awarded",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "resource_assigned",
"statusLabel": "Resource Assigned",
"value": 48000
}
],
"status": "awarded"
}
],
"status": "Closed Won",
"statusCode": "closed_won",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002",
"value": 48000
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000004",
"event": "engagement.closed_won",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-12T17:40:11Z"
}
engagement.closed_lost
The engagement was closed as lost.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"completedDate": "2026-09-12T17:44:03Z",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 9,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [],
"status": "Closed Lost",
"statusCode": "closed_lost",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000005",
"event": "engagement.closed_lost",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-12T17:44:03Z"
}
engagement.canceled
The engagement was cancelled.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 10,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [],
"status": "Canceled",
"statusCode": "canceled",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000006",
"event": "engagement.canceled",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-13T08:15:52Z"
}
engagement.info_added
Somebody added a dated note to the engagement's additional information. The note is in data.information.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"information": {
"authorName": "Jamie Alvarez",
"date": "2026-09-08T11:03:27Z",
"id": "44a0c0de-bbbb-4a2b-9c3d-00000000000b",
"text": "The client has moved the board meeting to 14 January, so fieldwork has to finish by the 9th."
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000003",
"event": "engagement.info_added",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-08T11:03:27Z"
}
Services
service.added
A service line was added to the engagement.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"service": {
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000007",
"event": "service.added",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-04T08:58:19Z"
}
service.canceled
A service line on the engagement was cancelled.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"service": {
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "canceled",
"name": "Financial Statement Audit",
"respondBy": "",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "canceled",
"statusLabel": "Canceled"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000008",
"event": "service.canceled",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-10T13:22:40Z"
}
engagement.service.assigned
One of your own people was staffed on a service line.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"engagement": {
"assignedServices": [
{
"assignedTo": "Dana Okonkwo",
"assignedToId": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"awardedAt": "2026-09-11T16:45:02Z",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "awarded",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "resource_assigned",
"statusLabel": "Resource Assigned",
"value": 48000
}
],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 8,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Partner",
"partners": [],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002",
"value": 48000
},
"service": {
"assignedTo": "Dana Okonkwo",
"assignedToId": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"awardedAt": "2026-09-11T16:45:02Z",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "awarded",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "resource_assigned",
"statusLabel": "Resource Assigned",
"value": 48000
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000009",
"event": "engagement.service.assigned",
"firm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"occurredAt": "2026-09-11T16:52:33Z"
}
Invitations
invitation.sent
A firm was invited to bid on one service line.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "invited"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000a",
"event": "invitation.sent",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-04T09:12:00Z"
}
invitation.in_review
The invited firm has started reviewing the invitation.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "review"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000b",
"event": "invitation.in_review",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-05T10:31:18Z"
}
invitation.accepted
The invited firm said yes. It has not been awarded the work yet — the lead firm may have several acceptances to choose between.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"currency": "USD",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "accepted",
"value": 48000
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000c",
"event": "invitation.accepted",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-06T14:07:55Z"
}
invitation.declined
The invited firm said no. declineReason carries their words when they gave any and you are entitled to read it.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"declineReason": "No capacity before April.",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "declined"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000d",
"event": "invitation.declined",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-06T15:19:02Z"
}
invitation.passed
The invited firm accepted and the lead firm chose somebody else. Not the same as declined.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"currency": "USD",
"id": "1c47c0de-cccc-4a2b-9c3d-00000000000c",
"invitedFirm": {
"domain": "whitlockreed.test",
"id": "90b5c0de-dddd-4a2b-9c3d-00000000000d",
"name": "Whitlock & Reed"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "passed",
"value": 51500
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000e",
"event": "invitation.passed",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-11T16:45:02Z"
}
invitation.awarded
The work was awarded to this firm. This is the event most integrations are built for, and value is what it is worth.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"assignedTo": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"awardedAt": "2026-09-11T16:45:02Z",
"currency": "USD",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "awarded",
"value": 48000
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000000f",
"event": "invitation.awarded",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-11T16:45:02Z"
}
invitation.ended
An awarded arrangement was stopped. endedBy says which side ended it — lead or partner, roles rather than firm names.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"awardedAt": "2026-09-11T16:45:02Z",
"currency": "USD",
"endedAt": "2026-10-02T09:26:41Z",
"endedBy": "partner",
"endedReason": "Our audit partner on this file has left the firm.",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "ended",
"value": 48000
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000010",
"event": "invitation.ended",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-10-02T09:26:41Z"
}
invitation.canceled
The invitation was withdrawn by the lead firm.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
},
"invitation": {
"id": "7e12c0de-eeee-4a2b-9c3d-00000000000e",
"invitedFirm": {
"domain": "caldertax.test",
"id": "6a93c0de-ffff-4a2b-9c3d-00000000000f",
"name": "Calder Tax Partners"
},
"leadFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"respondBy": "2026-09-30",
"sentAt": "2026-09-04T09:12:00Z",
"service": {
"catalogServiceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"id": "55e2c0de-9999-4a2b-9c3d-000000000009",
"name": "Financial Statement Audit"
},
"status": "canceled"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000011",
"event": "invitation.canceled",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-11T16:45:02Z"
}
Contacts
contact.added
Somebody was added as a contact on the engagement.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"contact": {
"email": "dokonkwo@kempercpa.com",
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"name": "Dana Okonkwo",
"phone": "+1 812 555 0177",
"role": "primary_partner",
"title": "Assurance Director",
"userId": "5f0bc0de-8888-4a2b-9c3d-000000000008"
},
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000012",
"event": "contact.added",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-07T09:44:12Z"
}
contact.removed
A contact was removed from the engagement. The record is a snapshot taken as they were removed — there is nothing left to read afterwards.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"contact": {
"email": "dokonkwo@kempercpa.com",
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"name": "Dana Okonkwo",
"phone": "+1 812 555 0177",
"role": "primary_partner",
"title": "Assurance Director",
"userId": "5f0bc0de-8888-4a2b-9c3d-000000000008"
},
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000013",
"event": "contact.removed",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-15T12:05:30Z"
}
contact.primary_changed
The primary contact seat moved. actor moved it and contact is who it moved to; they are two different people.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"contact": {
"email": "praghavan@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Priya Raghavan",
"phone": "+1 812 555 0190",
"role": "primary_creator",
"title": "Senior Manager",
"userId": "2d84c0de-1010-4a2b-9c3d-000000000010"
},
"engagement": {
"assignedServices": [],
"clientIndustry": "Machinery Manufacturing",
"clientName": "Riverbend Manufacturing",
"clientNameRevealed": true,
"clientSize": "201-500 employees",
"clientType": "Private company",
"createdDate": "2026-09-03T15:20:44Z",
"daysInitiated": 1,
"description": "Full-scope financial statement audit for the year ending 31 December 2026.",
"id": "2f19c0de-2222-4a2b-9c3d-000000000002",
"internalServices": [],
"internalServicesStatus": "",
"leadFirmContacts": [
{
"email": "jalvarez@hsccpa.com",
"firmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"firmName": "Harding & Shymanski",
"name": "Jamie Alvarez",
"phone": "+1 812 555 0142",
"role": "primary_creator",
"title": "Audit Partner",
"userId": "311ac0de-6666-4a2b-9c3d-000000000006"
}
],
"leadFirmId": "4471c0de-1111-4a2b-9c3d-000000000001",
"leadFirmName": "Harding & Shymanski",
"location": "Evansville, Indiana",
"name": "Riverbend Manufacturing \u2014 FY26 Audit",
"number": 10067,
"partnerRole": "Lead",
"partners": [
{
"contacts": [],
"firmId": "8802c0de-5555-4a2b-9c3d-000000000005",
"firmName": "Kemper CPA Group",
"services": [
{
"assignedTo": "",
"assignedToId": "",
"awardedAt": "",
"date": "2026-09-04T09:12:00Z",
"displayName": "",
"endedAt": "",
"endedBy": "",
"endedReason": "",
"engagementServiceId": "55e2c0de-9999-4a2b-9c3d-000000000009",
"id": "9d30c0de-4444-4a2b-9c3d-000000000004",
"lifecycleStatus": "invited",
"name": "Financial Statement Audit",
"respondBy": "2026-09-30",
"responseNote": "",
"sentAt": "2026-09-04T09:12:00Z",
"serviceId": "66f3c0de-aaaa-4a2b-9c3d-00000000000a",
"status": "invitation_sent",
"statusLabel": "Invitation Sent"
}
],
"status": "invited"
}
],
"status": "Open",
"statusCode": "open",
"unassignedServices": [],
"url": "https://app.firmlinks.net/engagements/2f19c0de-2222-4a2b-9c3d-000000000002"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000014",
"event": "contact.primary_changed",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-15T12:09:04Z"
}
Network groups
group.invitation.sent
A firm was invited into a network group.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"groupInvitation": {
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "3b70c0de-1111-4a2b-9c3d-000000000011",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We would like you in the alliance for the Indiana work.",
"sentAt": "2026-09-09T10:14:22Z",
"status": "pending"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000015",
"event": "group.invitation.sent",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-09T10:14:22Z"
}
group.invitation.accepted
An invited firm joined the group.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"groupInvitation": {
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "3b70c0de-1111-4a2b-9c3d-000000000011",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We would like you in the alliance for the Indiana work.",
"respondedAt": "2026-09-09T15:48:07Z",
"sentAt": "2026-09-09T10:14:22Z",
"status": "accepted"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000016",
"event": "group.invitation.accepted",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-09T15:48:07Z"
}
group.invitation.declined
An invited firm declined.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"groupInvitation": {
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "3b70c0de-1111-4a2b-9c3d-000000000011",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We would like you in the alliance for the Indiana work.",
"respondedAt": "2026-09-09T16:02:55Z",
"sentAt": "2026-09-09T10:14:22Z",
"status": "declined"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000017",
"event": "group.invitation.declined",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-09T16:02:55Z"
}
group.application.received
A firm asked to join a network group.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"groupApplication": {
"applicantFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "5c81c0de-1212-4a2b-9c3d-000000000012",
"referralDescription": "15% of first-year fees on work we send the other way.",
"referralIncentive": "unique",
"status": "pending",
"submittedAt": "2026-09-14T09:41:03Z",
"submittedBy": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
}
}
},
"deliveryId": "2b7f905e-4c11-4a38-8de2-6f0b1c4a7e32",
"event": "group.application.received",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-14T09:41:03Z"
}
group.application.accepted
The group's administrators accepted an application.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"groupApplication": {
"applicantFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"decidedAt": "2026-09-14T14:27:38Z",
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "5c81c0de-1212-4a2b-9c3d-000000000012",
"referralDescription": "15% of first-year fees on work we send the other way.",
"referralIncentive": "unique",
"status": "accepted",
"submittedAt": "2026-09-14T09:41:03Z",
"submittedBy": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
}
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000018",
"event": "group.application.accepted",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-14T14:27:38Z"
}
group.application.declined
The group's administrators declined an application.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"groupApplication": {
"applicantFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"decidedAt": "2026-09-14T14:31:12Z",
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "5c81c0de-1212-4a2b-9c3d-000000000012",
"referralDescription": "15% of first-year fees on work we send the other way.",
"referralIncentive": "unique",
"status": "declined",
"submittedAt": "2026-09-14T09:41:03Z",
"submittedBy": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
}
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-000000000019",
"event": "group.application.declined",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-14T14:31:12Z"
}
Connections
connection.invitation.sent
One firm asked to connect with another.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"connection": {
"id": "7f92c0de-1313-4a2b-9c3d-000000000013",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We refer a lot of manufacturing work into southern Indiana.",
"sentAt": "2026-09-02T11:18:45Z",
"status": "pending"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000001a",
"event": "connection.invitation.sent",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-02T11:18:45Z"
}
connection.invitation.accepted
A connection request was accepted. The status reads accepted, never active.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"connection": {
"id": "7f92c0de-1313-4a2b-9c3d-000000000013",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We refer a lot of manufacturing work into southern Indiana.",
"respondedAt": "2026-09-02T16:53:29Z",
"sentAt": "2026-09-02T11:18:45Z",
"status": "accepted"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000001b",
"event": "connection.invitation.accepted",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-02T16:53:29Z"
}
connection.invitation.declined
A connection request was declined. The record is a snapshot taken as it was declined — declining deletes it.
{
"actor": {
"email": "dokonkwo@kempercpa.com",
"id": "5f0bc0de-8888-4a2b-9c3d-000000000008",
"name": "Dana Okonkwo"
},
"data": {
"connection": {
"id": "7f92c0de-1313-4a2b-9c3d-000000000013",
"invitedFirm": {
"domain": "kempercpa.com",
"id": "8802c0de-5555-4a2b-9c3d-000000000005",
"name": "Kemper CPA Group"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"note": "We refer a lot of manufacturing work into southern Indiana.",
"respondedAt": "2026-09-02T17:04:16Z",
"sentAt": "2026-09-02T11:18:45Z",
"status": "declined"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000001c",
"event": "connection.invitation.declined",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-02T17:04:16Z"
}
Platform invitations
platform.invitation.sent
Your firm invited somebody who is not on FirmLinks. The invited party is an email address and a typed firm name, not a firm record.
{
"actor": {
"email": "jalvarez@hsccpa.com",
"id": "311ac0de-6666-4a2b-9c3d-000000000006",
"name": "Jamie Alvarez"
},
"data": {
"platformInvitation": {
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "4d05c0de-1414-4a2b-9c3d-000000000014",
"invitee": {
"email": "dana@brightwater.test",
"firmName": "Brightwater Advisors",
"firstName": "Dana",
"lastName": "Whitfield"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"sentAt": "2026-09-10T08:37:51Z",
"status": "pending"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000001d",
"event": "platform.invitation.sent",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-10T08:37:51Z"
}
platform.invitation.accepted
They signed up, so the firm now exists. createdFirm carries its real id and domain — the only delivery that can give you those.
{
"actor": {
"email": "dana@brightwater.test",
"id": "8c37c0de-1616-4a2b-9c3d-000000000016",
"name": "Dana Whitfield"
},
"data": {
"platformInvitation": {
"acceptedAt": "2026-09-11T13:02:09Z",
"createdFirm": {
"domain": "brightwater.test",
"id": "1e60c0de-1515-4a2b-9c3d-000000000015",
"name": "Brightwater Advisors"
},
"group": {
"adminFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"iconUrl": "https://media.firmlinks.net/groups/southeast-alliance.png",
"id": "0a5cc0de-7777-4a2b-9c3d-000000000007",
"name": "Southeast Alliance"
},
"id": "4d05c0de-1414-4a2b-9c3d-000000000014",
"invitee": {
"email": "dana@brightwater.test",
"firmName": "Brightwater Advisors",
"firstName": "Dana",
"lastName": "Whitfield"
},
"invitingFirm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"sentAt": "2026-09-10T08:37:51Z",
"status": "accepted"
}
},
"deliveryId": "8f2a41c6-0b4d-4e21-9a77-00000000001e",
"event": "platform.invitation.accepted",
"firm": {
"domain": "hsccpa.com",
"id": "4471c0de-1111-4a2b-9c3d-000000000001",
"name": "Harding & Shymanski"
},
"occurredAt": "2026-09-11T13:02:09Z"
}
If something is not arriving
- Check History first. A row with a failure and a response code means we reached you and you refused it; a row with an error and no code means we could not reach you at all; no row at all means we never tried — the webhook is paused, or it is subscribed to a different event than the one you are expecting, or your firm is not entitled to hear that event.
- Check the event. One webhook, one event. Subscribing to
invitation.awardedtells you nothing aboutinvitation.accepted. - Check the signature against the raw bytes. A signature that fails on every delivery is almost always a body that was parsed and re-serialized before verification.
- Check for two
v1values. If a rotation is in progress and you only check the first, deliveries fail for 24 hours and then start working. - Quote the delivery id. Every delivery carries
deliveryId, and the same id is on the History row — it is the fastest way for support to find exactly what we sent you.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article