Event Contract (input)
Ghostable sends JSON payloads with signed headers:X-Ghostable-TimestampX-Ghostable-Signature
id(event id)type(event type)occurred_at(timestamp)organization.idactor.id/actor.emailtarget.project_id/target.environment_idmetadata(event-specific context)
Recommended Normalized Fields
Map payloads into a stable schema:Datadog Template
- Create an HTTP intake endpoint (or intermediary worker).
- Verify signature before forwarding to Datadog Logs intake.
- Add pipeline remappers:
type->event.actionid->event.idorganization.id->organization.idactor.email->usr.email
- Create monitors:
- high rate of
push_force_overwrite - webhook delivery failures
- repeated version conflicts
- high rate of
event.actionorganization.idghostable.environment_idusr.email
Splunk Template
Usesourcetype=ghostable:audit and JSON extraction.
Suggested field aliases:
event_id=idevent_type=typeorg_id=organization.idactor_email=actor.email
Elastic Template
Map to ECS-compatible fields where possible:id->event.idtype->event.actionoccurred_at->@timestampactor.email->user.emailorganization.id->organization.id
jsonprocessor (if body wrapped as string)dateprocessor foroccurred_atrenameprocessors for ECS fieldssetprocessor forevent.dataset=ghostable.audit
Operational Checks
- Validate signatures and enforce timestamp drift checks before ingest.
- Deduplicate by
idto reduce replay noise. - Keep a dashboard for:
- overwrite activity (
push_force_overwrite) - conflict frequency (
version_conflict) - webhook delivery reliability using Ghostable metrics endpoint.
- overwrite activity (