• API Overview
  • Registration
    • Create/Update Registration
      POST
    • Delete Registration
      DELETE
    • Get Registrations
      GET
  • Event
    • Get Event
      GET
  • Webhooks
    • Create webhook
      POST
    • Update webhook
      PUT
    • Delete webhook
      DELETE
    • List webhook
      GET

Webhooks

MICEtribe Event Webhooks#

Receive real-time HTTP notifications when registration-related events occur on your event. Use webhooks to sync registrations with your CRM, analytics, access control, or custom backend.

Overview#

ItemDetails
ProtocolHTTPS POST
Content-Typeapplication/json
DeliveryAsynchronous (queued after registration events)
Timeout10 seconds per delivery attempt
RetriesUp to 5 automatic retries for failed deliveries
Management APIIntegrations service v1 (management-authenticated)
Base URL (examples)
EnvironmentBase path
Staginghttps://api.staging.micetribe.com/integrations/v1
Productionhttps://api.micetribe.com/integrations/v1

Supported triggers#

Configure one or more triggers per webhook. When an event happens, we POST to your URL only if that trigger is enabled on an active webhook for the same event_id.
TriggerValueWhen it fires
Registration createdregistration.createdA new registration is created
Registration updatedregistration.updatedAn existing registration is updated
Registration deletedregistration.deletedA registration is deleted
Registration attendedregistration.attendedAttendance is recorded
Registration printedregistration.printedA badge/registration is printed

Webhook security#

When you set a signing secret on the webhook, every delivery includes headers you can use to verify authenticity.

Request headers (outbound to your URL)#

HeaderDescription
Content-Typeapplication/json
Acceptapplication/json
X-TimestampUnix timestamp (seconds) used when signing
X-Request-IdUnique UUID for this delivery attempt
X-SignatureHMAC-SHA256 signature (only if signing secret is configured)

Signature algorithm#

signature = HMAC-SHA256( secret, timestamp + "." + raw_request_body )
secret — the signing secret you configured on the webhook
timestamp — value of X-Timestamp (string)
raw_request_body — exact JSON bytes in the POST body (no re-encoding)
Compare the result (hex) to X-Signature using a constant-time comparison.

Example (PHP)#

Security recommendations#

1.
Always use HTTPS for your webhook URL.
2.
Store the signing secret securely — it is encrypted at rest in our system.
3.
Reject old timestamps (optional) — e.g. reject if X-Timestamp is older than 5 minutes to limit replay windows.
4.
Respond quickly — return 2xx within a few seconds; heavy work should be queued on your side.
5.
Do not log the raw secret in your application logs.

Outbound payload format#

Each delivery sends a JSON object with this structure:
{
  "registration_id": "6a08287fa219e11ac60d2a10",
  "data": {
    "registration_data": {
      "email": "attendee@example.com",
      "phone": "+97400000000",
      "fullname": "Jane Doe",
      "first_name": "Jane",
      "last_name": "Doe"
    },
    "entry_status": "Approved",
    "persona": "attendee",
    "barcode": "ABC123XY",
    "source": "online",
    "mirror": "",
    "print": {
      "print_count": 0,
      "last_printed_at": "",
      "last_printed_by": ""
    },
    "checkin": {
      "attended": false,
      "checkin_at": ""
    },
    "payment": {
      "total_payment": "10.00",
      "currency": "QAR",
      "method": "SkipCash"
    }
  },
  "meta": {
    "event_id": 7337,
    "event_name": "My Event",
    "event_slug": "my-event",
    "webhook_name": "crm-sync",
    "occurred_at": "2026-06-01T12:29:11+00:00",
    "created_at": "2026-05-18T09:27:25+00:00",
    "updated_at": "2026-06-01T08:37:39+00:00",
    "trigger": "registration.updated",
    "webhook_url": "https://your-server.com/webhooks/micetribe",
    "request_method": "post"
  }
}

Field notes#

FieldDescription
registration_idRegistration document ID
data.registration_dataForm field values submitted by the attendee
data.entry_statusHuman-readable status: Approved, Declined, Pending Approved, Pending Payment, Request Revision, Updated
data.personaForm/persona slug (e.g. attendee, visitor)
data.barcodeRegistration barcode
data.sourceonline, onsite, integrations, or import
data.printIncluded when print-related data exists
data.checkinIncluded when check-in data exists
data.paymentIncluded when payment data exists
data.parentIncluded when parent registration data exists
data.productIncluded when product data exists
meta.triggerTrigger that caused this delivery
meta.webhook_nameName you gave the webhook in management
meta.occurred_atISO 8601 time of the underlying event
Optional blocks (print, checkin, payment, parent, product) are omitted when empty.

Delivery, logging, and retries#

First delivery#

A delivery log row is created per attempt (webhook_logs).
HTTP status 2xx is treated as success.
Status 300+ or network errors are treated as failure.

Automatic retries#

Failed deliveries are retried by a background job (webhooks:dispatch-retries), which runs every 15 minutes and picks up rows whose next_retry_at is due.
Retry attemptWait before next retry
1st retry15 minutes
2nd retry30 minutes
3rd retry3 hours
4th retry6 hours
5th retry12 hours
Maximum 5 retry attempts per log row (exponential-style backoff).

Implementing your endpoint#

Minimum requirements#

1.
Accept POST with JSON body.
2.
Return HTTP 200–299 on success.
3.
Verify X-Signature when a signing secret is configured.
4.
Process idempotently using registration_id + meta.trigger + X-Request-Id (retries may repeat the same payload).

Recommended response#

Non-2xx responses or timeouts trigger retries.

Testing#

1.
Create a webhook pointing to webhook.site or your staging URL.
2.
Set active: true and at least one trigger.
3.
Perform the action on an event (create/update registration).
4.
Confirm POST body and headers on your listener.
5.
Verify signature with the raw body and X-Timestamp.

Troubleshooting#

IssueWhat to check
No webhooks receivedWebhook active is true, correct event_id, trigger matches action
Invalid signatureUse raw request body; match X-Timestamp exactly; correct secret
Repeated deliveriesRetries after non-2xx; implement idempotency
Missing fields in payloadOptional blocks are omitted when empty; check trigger type
404 on management APIUse /integrations/v1/... (single slash after integrations)

Changelog (recent capabilities)#

Event-level webhooks with multiple triggers per endpoint
HMAC-SHA256 signing (X-Signature, X-Timestamp)
Structured payload (registration_id, data, meta)
Delivery logging and automatic retries with backoff
Management API for CRUD on webhooks per event

Support#

For management API access, webhook enablement per workspace/event, or integration questions, contact the MICEtribe integrations team.
Modified at 2026-08-20 12:29:45
Previous
Get Event
Next
Create webhook
Built with