Webhooks in Guides: Events
Symmetry Guides offers webhook events so clients can programmatically receive tax updates in real time. Each webhook includes what changed, when it changed, and which tax it applies to. The webhook is sent to the identified URL in JSON format.
Event Types
Symmetry Guides currently has two webhook event types.
| Event | Description |
|---|---|
tax_rate.rate_updated | Occurs whenever a tax rate is updated in Symmetry Guides. |
tax_rate.tax_created | Occurs whenever a tax rate is added in Symmetry Guides. |
Event Payload
The event payload fields are defined as follows:
| Field | Type | Description | Example |
|---|---|---|---|
apiVersion | string | Version of the webhook delivery contract. | "2026-05-23" |
eventId | string | Unique identifier for the event, in the format guides-{schema}-{itemIdentifier}. | "guides-tax_rate-04-000-0000-sit-000_20260101" |
eventType | string | The type of change that occurred, in the format {schema}.{action}. | "tax_rate.rate_updated" |
occurredAt | string | Timestamp of when the change occurred (UTC, RFC 3339). | "2026-06-08T19:59:39Z" |
data.resource.type | string | The content type that changed. | "tax_rate" |
data.resource.id | string | Unique identifier for the tax item. | "04-000-0000-sit-000" |
data.resource.title | string | Display name of the tax item. | "AZ SIT - Effective 2026-01-01" |
data.resource.effectiveDate | string | Effective date of the change (ISO 8601). | "2026-01-01" |
data.resource.jurisdiction | object | Jurisdiction details. | |
data.resource.jurisdiction.stateFips | string | State FIPS code. | "4" |
data.resource.jurisdiction.abbreviation | string | State abbreviation. | "AZ" |
data.changes | array | Array of field-level changes. Included when a prior version exists to compare against; omitted for newly created taxes. | |
data.changes[].path | string | The field that changed. | "res_rate" |
data.changes[].op | string | The type of change: add, replace, or remove. | "replace" |
data.changes[].previous | number | The prior value. Omitted for add operations. | 2.1 |
data.changes[].value | number | The new value. | 1.1 |
data.summary | string | Human-readable description of the change. | "The rate decreased from 2.1% to 1.1%" |
Payload Samples
The fields included in a webhook payload vary depending on the nature of the change. The changes array and jurisdiction details are included when available.
Example: Rate update on an existing tax
This payload is delivered when an existing tax rate is updated. The changes array shows the previous and new values.
{
"apiVersion": "2026-05-23",
"eventId": "guides-tax_rate-04-000-0000-sit-000_20260101",
"eventType": "tax_rate.rate_updated",
"occurredAt": "2026-06-08T19:59:39Z",
"data": {
"resource": {
"type": "tax_rate",
"id": "04-000-0000-sit-000",
"title": "AZ SIT - Effective 2026-01-01",
"effectiveDate": "2026-01-01",
"jurisdiction": {
"stateFips": "4",
"abbreviation": "AZ"
}
},
"changes": [
{
"path": "res_rate",
"op": "replace",
"previous": 2.1,
"value": 1.1
}
],
"summary": "The rate decreased from 2.1% to 1.1%"
}
}
Example: New tax added
{
"apiVersion": "2026-05-23",
"eventId": "guides-tax_rate-06-000-0000-sit-000_20260102",
"eventType": "tax_rate.tax_created",
"occurredAt": "2026-06-15T18:15:14Z",
"data": {
"resource": {
"type": "tax_rate",
"id": "CA_SIT_20260102",
"title": "California SIT",
"effectiveDate": "2026-01-01"
},
"changes": [
{
"path": "wage_base",
"op": "add"
},
{
"path": "res_rate",
"op": "add",
"value": 1.8
},
{
"path": "non_res_rate",
"op": "add",
"value": 2.2
},
{
"path": "tax_id",
"op": "add",
"value": "06-000-0000-SIT-000"
},
{
"path": "rate_effective_date",
"op": "add"
}
],
"summary": "The rate is 1.8%"
}
}
Activity
Events can be viewed within the Activity tab in Symmetry Guides. Click the Details button to see a copy of the payload, and click the Retry button to resend a failed webhook.
