Start inputs
Account sync
Passed by the calling system
Headless & Integration package
A CRM "account updated" webhook is validated and fanned out to the ERP, billing platform and support desk, with every result written to a sync log.
About this package
Webhook multi-system sync keeps customer master data consistent across systems without anyone touching it. Your CRM posts an "account updated" webhook with the account id, name, billing address, tax id, status, owner and change time.
The workflow rejects payloads without an account id or name, then builds a payload per target system and calls them one after another: PUT the customer into the ERP, POST a sync to the billing platform and PATCH the organisation in the support desk. An HTTP error from one system does not stop the others: each call is checked for a status of 400 or above and logged as a failure or a success in the Sync log table.
Adapt the three payloads to your systems' field names, point the integrations at your APIs and create an inbound webhook for the workflow in your CRM. The Sync log gives you a monitoring view and the rows you need to replay a failed sync.
Starts from an inbound webhook: create one for the Account sync workflow and register its URL in your CRM for "account updated" events.
Another system starts it over REST or an inbound webhook. No UI is needed; people only appear where a decision needs a human.
The flow
Webhook received
The CRM posts the account id, name, billing address, tax id, status, owner email and updated time.
Validate
Payloads without an account id or name are logged and rejected.
Upsert the ERP customer
The customer record is PUT into the ERP keyed by the CRM account id; the result is logged.
Sync billing
The billing platform receives the name, address, tax id and status; an HTTP error is logged as a failure and the run continues.
Update the support desk
The support organisation is patched with the name, owner and status tag.
Sync log
Every call writes its HTTP status and result to the Sync log table.
Forms
The inputs a caller passes when it starts a run, and the forms people complete when the process needs a decision.
Start inputs
Passed by the calling system
Headless
Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.
REST
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
-H "Authorization: Bearer $USERTASKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id":"<workflow id>","variables":{"account_id":"ACC-20117","account_name":"Harbour Logistics Ltd","billing_address":{"line1":"14 Quay Street","line2":"Level 3","city":"Auckland","region":"Auckland","postcode":"1010","country":"NZ"},"tax_id":"NZ-123-456-789","account_status":"active","owner_email":"jamie.cole@example.com","updated_at":"2026-10-26T07:14:02Z"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input account_id=ACC-20117 --input account_name="Harbour Logistics Ltd" --input billing_address='{"line1":"14 Quay Street","line2":"Level 3","city":"Auckland","region":"Auckland","postcode":"1010","country":"NZ"}' --input tax_id=NZ-123-456-789 … --waitInbound webhook
usertasks webhooks create <workflow id> # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
-H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
-d '{"account_id":"ACC-20117","account_name":"Harbour Logistics Ltd","billing_address":{"line1":"14 Quay Street","line2":"Level 3","city":"Auckland","region":"Auckland","postcode":"1010","country":"NZ"},"tax_id":"NZ-123-456-789","account_status":"active","owner_email":"jamie.cole@example.com","updated_at":"2026-10-26T07:14:02Z"}'What's included
| Type | Name | Details |
|---|---|---|
| Data table | Sync log | One row per target system per webhook: the HTTP status and whether the sync succeeded. Use it for monitoring and replays. |
| Integration | Billing platform | |
| Integration | ERP | |
| Integration | Support desk | |
| API reference | Sync billing account | POST /accounts/{{account_id}}/sync — Push the account name, billing address, tax id and status to the billing platform. |
| API reference | Update support organisation | PATCH /organizations/{{organization_id}} — Update the matching organisation in the support desk (name, status, account owner). |
| API reference | Upsert ERP customer | PUT /customers/{{external_id}} — Create or replace the customer master record in the ERP, keyed by the CRM account id. |
| Workflow | Account sync | 22 steps — Receives the CRM "account updated" webhook, validates it and upserts the account into the ERP, billing platform and support desk, logging each result. |
Sync log · schema only
Synced atAccount idTarget systemOperationHTTP statusResultMessage
Requirements
Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.
Integration “Billing platform”Required
Integration “ERP”Required
Integration “Support desk”Required
Install
Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.
curl -fLO https://usertasks.com/gallery/webhook-multi-system-sync-1.0.0.utpkg
usertasks packages inspect webhook-multi-system-sync-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install webhook-multi-system-sync-1.0.0.utpkg --dry-run
usertasks packages install webhook-multi-system-sync-1.0.0.utpkg # prompts for each requirement
usertasks packages install webhook-multi-system-sync-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete webhook-multi-system-sync -f values.yamlVerify the download
shasum -a 256 webhook-multi-system-sync-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.
Versions
Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work
More packages
Headless & Integration
An AI agent classifies each helpdesk ticket and drafts a reply; confident, low-risk answers go out automatically and the rest wait for a person.
Needs:AI modelREST APIAssigneesInbound webhook
Headless & Integration
Turn contract data from any app into a filled Word contract and Excel fee schedule, file both in your DMS and send the contract for e-signature.
Needs:REST APIDocument templatesInbound webhook
Headless & Integration
A synchronous order endpoint for your storefront: validate, price, fraud-screen, reserve stock, authorise payment and create the shipment in one call.
Needs:REST APIInbound webhookAssignees