GraphQL Events Reference¶
Dxtra uses event triggers to process database changes automatically. When a record is inserted or updated in a tracked table, the platform fires an internal webhook that executes the associated business logic.
Internal Only
All event triggers are internal to the Dxtra platform. There is no customer-configurable outbound webhook system. Events fire from the database to internal handlers and are not sent to your application endpoints.
How Event Triggers Work¶
graph LR
DB[(Database)] -->|Row change| Engine[Event Engine]
Engine -->|Webhook POST| Handler[Internal Handler]
Handler -->|Business logic| DB - A database row is inserted or updated in a tracked table
- The event engine detects the change and fires a webhook to the configured handler URL
- The internal handler executes business logic (e.g., send email, create related records, trigger workflows)
- Failed events are retried automatically
Event Payload Format¶
All event triggers follow a standard event payload format:
{
"event": {
"session_variables": {
"x-hasura-role": "user",
"x-hasura-user-id": "<user-uuid>"
},
"op": "INSERT",
"data": {
"old": null,
"new": {
"id": "<record-uuid>",
"created_at": "2025-08-11T10:30:00Z"
}
}
},
"created_at": "2025-08-11T10:30:00Z",
"id": "<event-uuid>",
"trigger": {
"name": "trigger_name"
}
}
| Field | Description |
|---|---|
event.op | Operation type: INSERT, UPDATE, or DELETE |
event.data.old | Previous row values (null for INSERT) |
event.data.new | New row values (null for DELETE) |
event.session_variables | Session context from the originating request |
trigger.name | Name of the event trigger that fired |
Core Data Events¶
Data Controller Events¶
data_controllers_insert -- fires when a new data controller is registered.
- Initializes Tag Manager account for the organization
- Sets up default compliance configuration
- Creates initial user permissions
data_controller_details_update -- fires when data controller details are updated.
Event Data:
{
"event": {
"type": "data_controller_created",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Acme Corporation",
"did": "did:dep:12345",
"created_at": "2025-08-07T10:30:00Z"
}
},
"created_at": "2025-08-07T10:30:00Z",
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}
Processing Actions: - Initialize Dxtra Tag Manager account - Set up default compliance templates - Create initial user permissions - Send welcome email sequence
Data Subject Events¶
data_subjects_insert -- fires when a new data subject record is created.
Event: data_subjects_insert
Webhook: Handled automatically by Dxtra platform
Event Data:
{
"event": {
"type": "data_subject_registered",
"data": {
"id": "f8e7d6c5-b4a3-2109-8765-432109876543",
"data_controller_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"created_at": "2025-08-07T10:30:00Z"
}
}
}
Processing Actions: - Generate privacy-preserving identifier - Link to existing processing activities - Initialize consent management records - Trigger consent collection workflows
Data Processing Activity Events¶
data_processing_activities_insert -- fires when a new processing activity is recorded.
- Validates legal basis and purpose alignment
- Updates compliance status
Rights Request Events¶
data_subject_rights_requests_insert -- fires when a data subject submits a rights request.
- Sends verification email to the data subject
- Creates processing timeline and deadlines
- Notifies relevant team members
data_subject_rights_requests_update -- fires when a rights request status or verification state changes.
- Triggers downstream workflows based on the new status
- Sends status update notifications
Authentication Events¶
auth_users_insert -- fires when a new user account is created.
- Runs email verification
- Initializes user profile
Payload:
{
"event": {
"op": "INSERT",
"data": {
"new": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"email": "user@example.com",
"displayName": "Jane Smith",
"createdAt": "2025-08-07T10:30:00Z",
"locale": "en",
"defaultRole": "user",
"isAnonymous": false
}
}
}
}
- Links the new account to pending team invitations
- Sets role-based permissions from the invitation
data_controller_create_user -- fires when a user is added to a data controller organization.
- Provisions access to the organization's resources
data_controller_users_update -- fires when a user's role or status changes within an organization.
- Syncs role changes to dependent services
- Updates Tag Manager user permissions
Consent Events¶
data_subject_preference_values_update -- fires when a data subject updates their consent preferences.
- Syncs preference changes across integrated platforms
Scheduled Events¶
Payload:
{
"event": {
"op": "INSERT",
"data": {
"new": {
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"owner_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"owner_type": "data_controller",
"title": "Consent renewal reminder",
"message": "Annual consent renewal required for processing activity",
"is_active": true,
"frequency_type": "monthly",
"frequency_rate": 1,
"next_event_at": "2025-09-07T10:30:00Z",
"reference": "consent_renewal",
"created_at": "2025-08-07T10:30:00Z"
}
}
}
}
- Routes the event to the appropriate handler based on event type
- Common scheduled events: rights request deadline reminders, consent renewal notifications, data retention policy execution
Domain Verification Events¶
domain_verification_cors_sync -- fires when a domain verification status changes.
- Updates CORS configuration for verified domains
Document Generation Events¶
generate_v0_profile -- fires when a compliance profile generation is queued.
- Triggers the onboarding assessment workflow
generate_controller_documents -- fires when document generation is queued.
- Orchestrates privacy document generation (notices, policies, agreements)
generate_controller_purposes -- fires when purpose generation is queued.
- Generates processing purposes from the organization profile
Scheduled Background Jobs¶
Dxtra runs scheduled background jobs (cron triggers) for maintenance tasks:
| Job | Schedule | Purpose |
|---|---|---|
| Delete expired controllers | Daily (midnight) | Removes expired trial accounts |
| Monthly usage check | 1st of each month | Evaluates subscription usage |
| Process scheduled events | Every 10 minutes | Executes queued scheduled events |
| Verify domain records | Every 15 minutes | Checks DNS records for domain verifications |
| Consolidate data subjects | Hourly | Merges duplicate data subject records |
| DSAR compliance check | Daily (8 AM) | Notifies DPO of overdue rights requests |
Event Configuration¶
All event triggers share these defaults:
| Setting | Value |
|---|---|
| Retry attempts | Varies per trigger (0–3) |
| Retry interval | 10 seconds |
| Processing timeout | 60 seconds |
| Columns included | All (*) |
Failed events are retried with the configured interval. If all retries fail, the event is logged for manual review.
For Developers¶
Event triggers are internal infrastructure. To integrate with Dxtra:
- Read data changes: Use GraphQL subscriptions for real-time updates
- Send data to Dxtra: Use integration webhooks to send events from third-party platforms
- Trigger operations: Use GraphQL actions to invoke specific operations
Related Pages¶
- Actions Reference -- GraphQL mutations and queries
- Webhooks -- Inbound webhook endpoints for third-party integrations
- Authentication -- Token exchange and role-based access