Import historical outcomes
Backfill benefits your application knows were granted. Imports do not run eligibility rules or add evaluation attempts.
CSV upload
Use the dashboard template. Required columns are email, benefit_key, outcome, and occurred_at with a timezone. The only historical outcome accepted is granted. Add external_user_id and external_outcome_id for stable matching.
Bulk API
Send up to 1,000 outcomes per request. Use a stable external outcome ID and include claim_id when reconciling an existing authorization. Duplicate delivery is safe.
{
"outcomes": [{
"external_outcome_id": "event-123",
"outcome": "granted",
"benefit": "signup_credits",
"claim_id": "claim-123",
"subject": {"external_id": "customer-123", "email": "alex@example.com"},
"occurred_at": "2026-09-20T12:00:00Z"
}]
}Fallback matching
Without an external outcome ID, Veltor derives one from the benefit, recipient, and exact occurrence time. Prefer your own durable ID because changing the timestamp changes the derived identity.
Failed CSV files
If validation fails, the original CSV remains available for 24 hours and its row errors and error report remain for 7 days. After the report expires, correct the source and upload the CSV again.